提交 4c5a5c8a 作者: Jeromy

more cleanup, update cboripld package

License: MIT
Signed-off-by: 's avatarJeromy <why@ipfs.io>
上级 f7d3f616
package dagcmd package dagcmd
import ( import (
"encoding/json"
"fmt" "fmt"
"io" "io"
"strings" "strings"
cmds "github.com/ipfs/go-ipfs/commands" cmds "github.com/ipfs/go-ipfs/commands"
ipldcbor "gx/ipfs/QmRcAVqrbY5wryx7hfNLtiUZbCcstzaJL7YJFBboitcqWF/go-ipld-cbor"
node "gx/ipfs/QmU7bFWQ793qmvNy7outdCaMfSDNk8uqhx4VNrxYj5fj5g/go-ipld-node" node "gx/ipfs/QmU7bFWQ793qmvNy7outdCaMfSDNk8uqhx4VNrxYj5fj5g/go-ipld-node"
cid "gx/ipfs/QmXfiyr2RWEXpVDdaYnD2HNiBk6UBddsvEP4RPfXb6nGqY/go-cid" cid "gx/ipfs/QmXfiyr2RWEXpVDdaYnD2HNiBk6UBddsvEP4RPfXb6nGqY/go-cid"
ipldcbor "gx/ipfs/QmY7L2aEa1rHjkSSbXJB8oC7825JTpUUvDygmM2JPQeqhr/go-ipld-cbor"
) )
var DagCmd = &cmds.Command{ var DagCmd = &cmds.Command{
...@@ -18,7 +17,6 @@ var DagCmd = &cmds.Command{ ...@@ -18,7 +17,6 @@ var DagCmd = &cmds.Command{
Tagline: "Interact with ipld dag objects.", Tagline: "Interact with ipld dag objects.",
ShortDescription: ``, ShortDescription: ``,
}, },
Subcommands: map[string]*cmds.Command{ Subcommands: map[string]*cmds.Command{
"put": DagPutCmd, "put": DagPutCmd,
"get": DagGetCmd, "get": DagGetCmd,
...@@ -121,76 +119,12 @@ var DagGetCmd = &cmds.Command{ ...@@ -121,76 +119,12 @@ var DagGetCmd = &cmds.Command{
} }
func convertJsonToType(r io.Reader, format string) (node.Node, error) { 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 { switch format {
case "cbor", "dag-cbor": case "cbor", "dag-cbor":
return convertJsonToCbor(obj) return ipldcbor.FromJson(r)
case "dag-pb", "protobuf": case "dag-pb", "protobuf":
return nil, fmt.Errorf("protobuf handling in 'dag' command not yet implemented") return nil, fmt.Errorf("protobuf handling in 'dag' command not yet implemented")
default: default:
return nil, fmt.Errorf("unknown target format: %s", format) 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
}
}
...@@ -11,10 +11,10 @@ import ( ...@@ -11,10 +11,10 @@ import (
bserv "github.com/ipfs/go-ipfs/blockservice" bserv "github.com/ipfs/go-ipfs/blockservice"
offline "github.com/ipfs/go-ipfs/exchange/offline" offline "github.com/ipfs/go-ipfs/exchange/offline"
ipldcbor "gx/ipfs/QmRcAVqrbY5wryx7hfNLtiUZbCcstzaJL7YJFBboitcqWF/go-ipld-cbor"
logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log" logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log"
node "gx/ipfs/QmU7bFWQ793qmvNy7outdCaMfSDNk8uqhx4VNrxYj5fj5g/go-ipld-node" node "gx/ipfs/QmU7bFWQ793qmvNy7outdCaMfSDNk8uqhx4VNrxYj5fj5g/go-ipld-node"
cid "gx/ipfs/QmXfiyr2RWEXpVDdaYnD2HNiBk6UBddsvEP4RPfXb6nGqY/go-cid" cid "gx/ipfs/QmXfiyr2RWEXpVDdaYnD2HNiBk6UBddsvEP4RPfXb6nGqY/go-cid"
ipldcbor "gx/ipfs/QmY7L2aEa1rHjkSSbXJB8oC7825JTpUUvDygmM2JPQeqhr/go-ipld-cbor"
) )
var log = logging.Logger("merkledag") var log = logging.Logger("merkledag")
......
...@@ -278,9 +278,9 @@ ...@@ -278,9 +278,9 @@
}, },
{ {
"author": "whyrusleeping", "author": "whyrusleeping",
"hash": "QmY7L2aEa1rHjkSSbXJB8oC7825JTpUUvDygmM2JPQeqhr", "hash": "QmRcAVqrbY5wryx7hfNLtiUZbCcstzaJL7YJFBboitcqWF",
"name": "go-ipld-cbor", "name": "go-ipld-cbor",
"version": "0.2.2" "version": "0.3.0"
} }
], ],
"gxVersion": "0.4.0", "gxVersion": "0.4.0",
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论