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  }