提交 f7d3f616 作者: Jeromy

clean up some code, update cbor package, and add tests

License: MIT
Signed-off-by: 's avatarJeromy <why@ipfs.io>
上级 6b797f10
......@@ -10,7 +10,7 @@ import (
node "gx/ipfs/QmU7bFWQ793qmvNy7outdCaMfSDNk8uqhx4VNrxYj5fj5g/go-ipld-node"
cid "gx/ipfs/QmXfiyr2RWEXpVDdaYnD2HNiBk6UBddsvEP4RPfXb6nGqY/go-cid"
ipldcbor "gx/ipfs/QmYRzW9YDHVNCDbfFzbS7TEXAG1swE1yjq1basZ5WnJYH4/go-ipld-cbor"
ipldcbor "gx/ipfs/QmY7L2aEa1rHjkSSbXJB8oC7825JTpUUvDygmM2JPQeqhr/go-ipld-cbor"
)
var DagCmd = &cmds.Command{
......@@ -37,8 +37,8 @@ var DagPutCmd = &cmds.Command{
cmds.FileArg("object data", true, false, "The object to put").EnableStdin(),
},
Options: []cmds.Option{
cmds.StringOption("format", "f", "Format that the object will be.").Default("cbor"),
cmds.StringOption("input-enc", "Format that the object will be.").Default("json"),
cmds.StringOption("format", "f", "Format that the object will be added as.").Default("cbor"),
cmds.StringOption("input-enc", "Format that the input object will be.").Default("json"),
},
Run: func(req cmds.Request, res cmds.Response) {
n, err := req.InvocContext().GetNode()
......@@ -55,17 +55,10 @@ var DagPutCmd = &cmds.Command{
ienc, _, _ := req.Option("input-enc").String()
format, _, _ := req.Option("format").String()
_ = format
switch ienc {
case "json":
var obj map[string]interface{}
err := json.NewDecoder(fi).Decode(&obj)
if err != nil {
res.SetError(err, cmds.ErrNormal)
return
}
nd, err := convertJsonToType(obj, format)
nd, err := convertJsonToType(fi, format)
if err != nil {
res.SetError(err, cmds.ErrNormal)
return
......@@ -79,29 +72,9 @@ var DagPutCmd = &cmds.Command{
res.SetOutput(&OutputObject{Cid: c})
return
/*
case "btc":
data, err := ioutil.ReadAll(fi)
if err != nil {
res.SetError(err, cmds.ErrNormal)
return
}
blk, err := ipldbtc.DecodeBlock(data)
if err != nil {
res.SetError(err, cmds.ErrNormal)
return
}
c, err := n.DAG.Add(blk)
if err != nil {
res.SetError(err, cmds.ErrNormal)
return
}
res.SetOutput(&OutputObject{Cid: c})
return
*/
default:
res.SetError(fmt.Errorf("unrecognized input encoding: %s", ienc), cmds.ErrNormal)
return
}
},
Type: OutputObject{},
......@@ -147,7 +120,13 @@ var DagGetCmd = &cmds.Command{
},
}
func convertJsonToType(obj map[string]interface{}, 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 {
case "cbor", "dag-cbor":
return convertJsonToCbor(obj)
......@@ -166,6 +145,7 @@ func convertJsonToCbor(from map[string]interface{}) (*ipldcbor.Node, error) {
return ipldcbor.WrapMap(out)
}
func convertMapSIToCbor(from map[string]interface{}) (map[interface{}]interface{}, error) {
to := make(map[interface{}]interface{})
for k, v := range from {
......
......@@ -14,7 +14,7 @@ import (
logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log"
node "gx/ipfs/QmU7bFWQ793qmvNy7outdCaMfSDNk8uqhx4VNrxYj5fj5g/go-ipld-node"
cid "gx/ipfs/QmXfiyr2RWEXpVDdaYnD2HNiBk6UBddsvEP4RPfXb6nGqY/go-cid"
ipldcbor "gx/ipfs/QmYRzW9YDHVNCDbfFzbS7TEXAG1swE1yjq1basZ5WnJYH4/go-ipld-cbor"
ipldcbor "gx/ipfs/QmY7L2aEa1rHjkSSbXJB8oC7825JTpUUvDygmM2JPQeqhr/go-ipld-cbor"
)
var log = logging.Logger("merkledag")
......@@ -108,10 +108,6 @@ func decodeBlock(b blocks.Block) (node.Node, error) {
return NewRawNode(b.RawData()), nil
case cid.CBOR:
return ipldcbor.Decode(b.RawData())
/*
case cid.Bitcoin:
return ipldbtc.DecodeBlock(b.RawData())
*/
default:
return nil, fmt.Errorf("unrecognized object type: %s", c.Type())
}
......
......@@ -278,9 +278,9 @@
},
{
"author": "whyrusleeping",
"hash": "QmYRzW9YDHVNCDbfFzbS7TEXAG1swE1yjq1basZ5WnJYH4",
"hash": "QmY7L2aEa1rHjkSSbXJB8oC7825JTpUUvDygmM2JPQeqhr",
"name": "go-ipld-cbor",
"version": "0.2.1"
"version": "0.2.2"
}
],
"gxVersion": "0.4.0",
......
#!/bin/sh
#
# Copyright (c) 2016 Jeromy Johnson
# MIT Licensed; see the LICENSE file in this repository.
#
test_description="Test dag command"
. lib/test-lib.sh
test_init_ipfs
test_expect_success "make a few test files" '
echo "foo" > file1 &&
echo "bar" > file2 &&
echo "baz" > file3 &&
echo "qux" > file4 &&
HASH1=$(ipfs add -q file1) &&
HASH2=$(ipfs add -q file2) &&
HASH3=$(ipfs add -q file3) &&
HASH4=$(ipfs add -q file4)
'
test_expect_success "make an ipld object in json" '
printf "{\"hello\":\"world\",\"cats\":[{\"/\":\"%s\"},{\"water\":{\"/\":\"%s\"}}],\"magic\":{\"/\":\"%s\"}}" $HASH1 $HASH2 $HASH3 > ipld_object
'
test_dag_cmd() {
test_expect_success "can add an ipld object" '
IPLDHASH=$(cat ipld_object | ipfs dag put)
'
test_expect_success "output looks correct" '
EXPHASH="zdpuApvChR5xM7ttbQmpmtna7wcShHi4gPyxUcWbB7nh8K7cN"
test $EXPHASH = $IPLDHASH
'
test_expect_success "various path traversals work" '
ipfs cat $IPLDHASH/cats/0 > out1 &&
ipfs cat $IPLDHASH/cats/1/water > out2 &&
ipfs cat $IPLDHASH/magic > out3
'
test_expect_success "outputs look correct" '
test_cmp file1 out1 &&
test_cmp file2 out2 &&
test_cmp file3 out3
'
}
# should work offline
test_dag_cmd
# should work online
test_launch_ipfs_daemon
test_dag_cmd
test_kill_ipfs_daemon
test_done
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论