func (ph *PublishHandler) bootstrapPermanode(jsonSign *JSONSignHandler) (err os.Error) { if pn, err := ph.Search.Index().PermanodeOfSignerAttrValue(ph.Search.Owner(), "camliRoot", ph.RootName); err == nil { log.Printf("Publish root %q using existing permanode %s", ph.RootName, pn) return nil } log.Printf("Publish root %q needs a permanode + claim", ph.RootName) defer func() { if perr := recover(); perr != nil { err = perr.(os.Error) } }() signUpload := func(name string, m map[string]interface{}) *blobref.BlobRef { signed, err := jsonSign.SignMap(m) if err != nil { panic(fmt.Errorf("error signing %s: %v", name, err)) } uh := client.NewUploadHandleFromString(signed) _, err = ph.Storage.ReceiveBlob(uh.BlobRef, uh.Contents) if err != nil { panic(fmt.Errorf("error uploading %s: %v", name, err)) } return uh.BlobRef } pn := signUpload("permanode", schema.NewUnsignedPermanode()) signUpload("set-attr camliRoot", schema.NewSetAttributeClaim(pn, "camliRoot", ph.RootName)) signUpload("set-attr title", schema.NewSetAttributeClaim(pn, "title", "Publish root node for "+ph.RootName)) return nil }
func (up *Uploader) UploadNewPermanode() (*client.PutResult, os.Error) { unsigned := schema.NewUnsignedPermanode() signed, err := up.SignMap(unsigned) if err != nil { return nil, err } return up.Upload(client.NewUploadHandleFromString(signed)) }
func (up *Uploader) UploadNewPermanode() (*client.PutResult, os.Error) { unsigned := schema.NewUnsignedPermanode() return up.UploadAndSignMap(unsigned) }