github.com/keltia/go-ipfs@v0.3.8-0.20150909044612-210793031c63/fuse/ipns/common.go (about) 1 package ipns 2 3 import ( 4 context "github.com/ipfs/go-ipfs/Godeps/_workspace/src/golang.org/x/net/context" 5 6 "github.com/ipfs/go-ipfs/core" 7 mdag "github.com/ipfs/go-ipfs/merkledag" 8 nsys "github.com/ipfs/go-ipfs/namesys" 9 ci "github.com/ipfs/go-ipfs/p2p/crypto" 10 path "github.com/ipfs/go-ipfs/path" 11 ft "github.com/ipfs/go-ipfs/unixfs" 12 ) 13 14 // InitializeKeyspace sets the ipns record for the given key to 15 // point to an empty directory. 16 func InitializeKeyspace(n *core.IpfsNode, key ci.PrivKey) error { 17 emptyDir := &mdag.Node{Data: ft.FolderPBData()} 18 nodek, err := n.DAG.Add(emptyDir) 19 if err != nil { 20 return err 21 } 22 23 ctx, cancel := context.WithCancel(n.Context()) 24 defer cancel() 25 26 err = n.Pinning.Pin(ctx, emptyDir, false) 27 if err != nil { 28 return err 29 } 30 31 err = n.Pinning.Flush() 32 if err != nil { 33 return err 34 } 35 36 pub := nsys.NewRoutingPublisher(n.Routing) 37 if err := pub.Publish(ctx, key, path.FromKey(nodek)); err != nil { 38 return err 39 } 40 41 return nil 42 }