github.com/keltia/go-ipfs@v0.3.8-0.20150909044612-210793031c63/core/coreunix/metadata.go (about) 1 package coreunix 2 3 import ( 4 key "github.com/ipfs/go-ipfs/blocks/key" 5 core "github.com/ipfs/go-ipfs/core" 6 dag "github.com/ipfs/go-ipfs/merkledag" 7 ft "github.com/ipfs/go-ipfs/unixfs" 8 ) 9 10 func AddMetadataTo(n *core.IpfsNode, skey string, m *ft.Metadata) (string, error) { 11 ukey := key.B58KeyDecode(skey) 12 13 nd, err := n.DAG.Get(n.Context(), ukey) 14 if err != nil { 15 return "", err 16 } 17 18 mdnode := new(dag.Node) 19 mdata, err := ft.BytesForMetadata(m) 20 if err != nil { 21 return "", err 22 } 23 24 mdnode.Data = mdata 25 if err := mdnode.AddNodeLinkClean("file", nd); err != nil { 26 return "", err 27 } 28 29 nk, err := n.DAG.Add(mdnode) 30 if err != nil { 31 return "", err 32 } 33 34 return nk.B58String(), nil 35 } 36 37 func Metadata(n *core.IpfsNode, skey string) (*ft.Metadata, error) { 38 ukey := key.B58KeyDecode(skey) 39 40 nd, err := n.DAG.Get(n.Context(), ukey) 41 if err != nil { 42 return nil, err 43 } 44 45 return ft.MetadataFromBytes(nd.Data) 46 }