提交 613508a0 作者: Steven Allen

add raw support to the dag put command.

`dag get` still doesn't properly support raw output but that's a bigger issue.

License: MIT
Signed-off-by: 's avatarSteven Allen <steven@stebalien.com>
上级 1e73c3fb
......@@ -37,6 +37,8 @@ var defaultRawParsers = FormatParsers{
"protobuf": dagpbRawParser,
"dag-pb": dagpbRawParser,
"raw": rawRawParser,
}
var defaultCborParsers = FormatParsers{
......
package coredag
import (
"io"
"io/ioutil"
"math"
"github.com/ipfs/go-ipfs/merkledag"
cid "gx/ipfs/QmNp85zy9RLrQ5oQD4hPyS39ezrrXpcaa7R4Y9kxdWQLLQ/go-cid"
node "gx/ipfs/QmPN7cwmpcc4DWXb4KTB9dNAJgjuPY69h3npsMfhRrQL9c/go-ipld-format"
block "gx/ipfs/QmSn9Td7xgxm9EV7iEjTckpUWmWApggzPxu7eFGWkkpwin/go-block-format"
mh "gx/ipfs/QmU9a9NV9RdPNwZQDYd5uKsm6N6LJLSvLbywDDYFbaaC6P/go-multihash"
)
func rawRawParser(r io.Reader, mhType uint64, mhLen int) ([]node.Node, error) {
if mhType == math.MaxUint64 {
mhType = mh.SHA2_256
}
data, err := ioutil.ReadAll(r)
if err != nil {
return nil, err
}
h, err := mh.Sum(data, mhType, mhLen)
if err != nil {
return nil, err
}
c := cid.NewCidV1(cid.Raw, h)
blk, err := block.NewBlockWithCid(data, c)
if err != nil {
return nil, err
}
nd := &merkledag.RawNode{Block: blk}
return []node.Node{nd}, nil
}
......@@ -167,6 +167,12 @@ test_dag_cmd() {
test_cmp dag_put_exp dag_put_out
'
test_expect_success "dag put with raw node works" '
echo "foo bar" > raw_node_in &&
HASH=$(ipfs dag put --format=raw --input-enc=raw -- raw_node_in) &&
ipfs block get "$HASH" > raw_node_out &&
test_cmp raw_node_in raw_node_out'
test_expect_success "dag put multiple files" '
printf {\"foo\":\"bar\"} > a.json &&
printf {\"foo\":\"baz\"} > b.json &&
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论