diff --git a/core/commands/dag/dag.go b/core/commands/dag/dag.go index dc09a4084..a7159d419 100644 --- a/core/commands/dag/dag.go +++ b/core/commands/dag/dag.go @@ -1,16 +1,15 @@ package dagcmd import ( - "encoding/json" "fmt" "io" "strings" cmds "github.com/ipfs/go-ipfs/commands" + ipldcbor "gx/ipfs/QmRcAVqrbY5wryx7hfNLtiUZbCcstzaJL7YJFBboitcqWF/go-ipld-cbor" node "gx/ipfs/QmU7bFWQ793qmvNy7outdCaMfSDNk8uqhx4VNrxYj5fj5g/go-ipld-node" cid "gx/ipfs/QmXfiyr2RWEXpVDdaYnD2HNiBk6UBddsvEP4RPfXb6nGqY/go-cid" - ipldcbor "gx/ipfs/QmY7L2aEa1rHjkSSbXJB8oC7825JTpUUvDygmM2JPQeqhr/go-ipld-cbor" ) var DagCmd = &cmds.Command{ @@ -18,7 +17,6 @@ var DagCmd = &cmds.Command{ Tagline: "Interact with ipld dag objects.", ShortDescription: ``, }, - Subcommands: map[string]*cmds.Command{ "put": DagPutCmd, "get": DagGetCmd, @@ -121,76 +119,12 @@ var DagGetCmd = &cmds.Command{ } func convertJsonToType(r io.Reader, format string) (node.Node, error) { - var obj map[string]interface{} - err := json.NewDecoder(r).Decode(&obj) - if err != nil { - return nil, err - } - switch format { case "cbor", "dag-cbor": - return convertJsonToCbor(obj) + return ipldcbor.FromJson(r) case "dag-pb", "protobuf": return nil, fmt.Errorf("protobuf handling in 'dag' command not yet implemented") default: return nil, fmt.Errorf("unknown target format: %s", format) } } - -func convertJsonToCbor(from map[string]interface{}) (*ipldcbor.Node, error) { - out, err := convertMapSIToCbor(from) - if err != nil { - return nil, err - } - - return ipldcbor.WrapMap(out) -} - -func convertMapSIToCbor(from map[string]interface{}) (map[interface{}]interface{}, error) { - to := make(map[interface{}]interface{}) - for k, v := range from { - out, err := convertToCborIshObj(v) - if err != nil { - return nil, err - } - to[k] = out - } - - return to, nil -} - -func convertToCborIshObj(i interface{}) (interface{}, error) { - switch v := i.(type) { - case map[string]interface{}: - if lnk, ok := v["/"]; ok && len(v) == 1 { - // special case for links - vstr, ok := lnk.(string) - if !ok { - return nil, fmt.Errorf("link should have been a string") - } - - c, err := cid.Decode(vstr) - if err != nil { - return nil, err - } - - return &ipldcbor.Link{Target: c}, nil - } - - return convertMapSIToCbor(v) - case []interface{}: - var out []interface{} - for _, o := range v { - obj, err := convertToCborIshObj(o) - if err != nil { - return nil, err - } - - out = append(out, obj) - } - - return out, nil - default: - return v, nil - } -} diff --git a/merkledag/merkledag.go b/merkledag/merkledag.go index 5d3c3aebd..bb115aae1 100644 --- a/merkledag/merkledag.go +++ b/merkledag/merkledag.go @@ -11,10 +11,10 @@ import ( bserv "github.com/ipfs/go-ipfs/blockservice" offline "github.com/ipfs/go-ipfs/exchange/offline" + ipldcbor "gx/ipfs/QmRcAVqrbY5wryx7hfNLtiUZbCcstzaJL7YJFBboitcqWF/go-ipld-cbor" logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log" node "gx/ipfs/QmU7bFWQ793qmvNy7outdCaMfSDNk8uqhx4VNrxYj5fj5g/go-ipld-node" cid "gx/ipfs/QmXfiyr2RWEXpVDdaYnD2HNiBk6UBddsvEP4RPfXb6nGqY/go-cid" - ipldcbor "gx/ipfs/QmY7L2aEa1rHjkSSbXJB8oC7825JTpUUvDygmM2JPQeqhr/go-ipld-cbor" ) var log = logging.Logger("merkledag") diff --git a/package.json b/package.json index a99ddb2a3..988da8d8d 100644 --- a/package.json +++ b/package.json @@ -278,9 +278,9 @@ }, { "author": "whyrusleeping", - "hash": "QmY7L2aEa1rHjkSSbXJB8oC7825JTpUUvDygmM2JPQeqhr", + "hash": "QmRcAVqrbY5wryx7hfNLtiUZbCcstzaJL7YJFBboitcqWF", "name": "go-ipld-cbor", - "version": "0.2.2" + "version": "0.3.0" } ], "gxVersion": "0.4.0",