mirror of
https://github.com/ipfs/kubo.git
synced 2026-03-03 15:27:57 +08:00
Merge pull request #882 from jbenet/ipfsObject
Ipfs object put from stdin
This commit is contained in:
commit
276f471ca8
@ -35,11 +35,11 @@ var ObjectCmd = &cmds.Command{
|
||||
'ipfs object' is a plumbing command used to manipulate DAG objects
|
||||
directly.`,
|
||||
Synopsis: `
|
||||
ipfs object get <key> - Get the DAG node named by <key>
|
||||
ipfs object put <data> <encoding> - Stores input, outputs its key
|
||||
ipfs object data <key> - Outputs raw bytes in an object
|
||||
ipfs object links <key> - Outputs links pointed to by object
|
||||
ipfs object stat <key> - Outputs statistics of object
|
||||
ipfs object get <key> - Get the DAG node named by <key>
|
||||
ipfs object put <data> - Stores input, outputs its key
|
||||
ipfs object data <key> - Outputs raw bytes in an object
|
||||
ipfs object links <key> - Outputs links pointed to by object
|
||||
ipfs object stat <key> - Outputs statistics of object
|
||||
`,
|
||||
},
|
||||
|
||||
@ -274,16 +274,18 @@ It reads from stdin, and the output is a base58 encoded multihash.
|
||||
'ipfs object put' is a plumbing command for storing DAG nodes.
|
||||
It reads from stdin, and the output is a base58 encoded multihash.
|
||||
|
||||
Data should be in the format specified by <encoding>.
|
||||
<encoding> may be one of the following:
|
||||
Data should be in the format specified by the --inputenc flag.
|
||||
--inputenc may be one of the following:
|
||||
* "protobuf"
|
||||
* "json"
|
||||
* "json" (default)
|
||||
`,
|
||||
},
|
||||
|
||||
Arguments: []cmds.Argument{
|
||||
cmds.FileArg("data", true, false, "Data to be stored as a DAG object"),
|
||||
cmds.StringArg("encoding", true, false, "Encoding type of <data>, either \"protobuf\" or \"json\""),
|
||||
cmds.FileArg("data", true, false, "Data to be stored as a DAG object").EnableStdin(),
|
||||
},
|
||||
Options: []cmds.Option{
|
||||
cmds.StringOption("inputenc", "Encoding type of input data, either \"protobuf\" or \"json\""),
|
||||
},
|
||||
Run: func(req cmds.Request, res cmds.Response) {
|
||||
n, err := req.Context().GetNode()
|
||||
@ -298,9 +300,16 @@ Data should be in the format specified by <encoding>.
|
||||
return
|
||||
}
|
||||
|
||||
encoding := req.Arguments()[0]
|
||||
inputenc, found, err := req.Option("inputenc").String()
|
||||
if err != nil {
|
||||
res.SetError(err, cmds.ErrNormal)
|
||||
return
|
||||
}
|
||||
if !found {
|
||||
inputenc = "json"
|
||||
}
|
||||
|
||||
output, err := objectPut(n, input, encoding)
|
||||
output, err := objectPut(n, input, inputenc)
|
||||
if err != nil {
|
||||
errType := cmds.ErrNormal
|
||||
if err == ErrUnknownObjectEnc {
|
||||
|
||||
4
test/sharness/t0051-object-data/expected_getOut
Normal file
4
test/sharness/t0051-object-data/expected_getOut
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"Links": [],
|
||||
"Data": "\u0008\u0002\u0012\nHello Mars\u0018\n"
|
||||
}
|
||||
3
test/sharness/t0051-object-data/testPut.json
Normal file
3
test/sharness/t0051-object-data/testPut.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"Data": "test json for sharness test"
|
||||
}
|
||||
2
test/sharness/t0051-object-data/testPut.pb
Normal file
2
test/sharness/t0051-object-data/testPut.pb
Normal file
@ -0,0 +1,2 @@
|
||||
|
||||
test json for sharness test
|
||||
86
test/sharness/t0051-object.sh
Executable file
86
test/sharness/t0051-object.sh
Executable file
@ -0,0 +1,86 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2015 Henry Bubert
|
||||
# MIT Licensed; see the LICENSE file in this repository.
|
||||
#
|
||||
|
||||
test_description="Test object command"
|
||||
|
||||
. lib/test-lib.sh
|
||||
|
||||
test_init_ipfs
|
||||
|
||||
test_expect_success "'ipfs add testData' succeeds" '
|
||||
printf "Hello Mars" >expected_in &&
|
||||
ipfs add expected_in >actual_Addout
|
||||
'
|
||||
|
||||
test_expect_success "'ipfs add testData' output looks good" '
|
||||
HASH="QmWkHFpYBZ9mpPRreRbMhhYWXfUhBAue3JkbbpFqwowSRb" &&
|
||||
echo "added $HASH expected_in" >expected_Addout &&
|
||||
test_cmp expected_Addout actual_Addout
|
||||
'
|
||||
|
||||
test_expect_success "'ipfs object get' succeeds" '
|
||||
ipfs object get $HASH >actual_getOut
|
||||
'
|
||||
|
||||
test_expect_success "'ipfs object get' output looks good" '
|
||||
test_cmp ../t0051-object-data/expected_getOut actual_getOut
|
||||
'
|
||||
|
||||
test_expect_success "'ipfs object stat' succeeds" '
|
||||
ipfs object stat $HASH >actual_stat
|
||||
'
|
||||
|
||||
test_expect_success "'ipfs object get' output looks good" '
|
||||
echo "NumLinks: 0" >> expected_stat &&
|
||||
echo "BlockSize: 18" >> expected_stat &&
|
||||
echo "LinksSize: 2" >> expected_stat &&
|
||||
echo "DataSize: 16" >> expected_stat &&
|
||||
echo "CumulativeSize: 18" >> expected_stat &&
|
||||
test_cmp expected_stat actual_stat
|
||||
'
|
||||
|
||||
test_expect_success "'ipfs object put file.json' succeeds" '
|
||||
ipfs object put ../t0051-object-data/testPut.json > actual_putOut
|
||||
'
|
||||
|
||||
test_expect_success "'ipfs object put file.json' output looks good" '
|
||||
HASH="QmUTSAdDi2xsNkDtLqjFgQDMEn5di3Ab9eqbrt4gaiNbUD" &&
|
||||
printf "added $HASH" > expected_putOut &&
|
||||
test_cmp expected_putOut actual_putOut
|
||||
'
|
||||
|
||||
test_expect_success "'ipfs object put file.pb' succeeds" '
|
||||
ipfs object put --inputenc=protobuf ../t0051-object-data/testPut.pb > actual_putOut
|
||||
'
|
||||
|
||||
test_expect_success "'ipfs object put file.pb' output looks good" '
|
||||
HASH="QmUTSAdDi2xsNkDtLqjFgQDMEn5di3Ab9eqbrt4gaiNbUD" &&
|
||||
printf "added $HASH" > expected_putOut &&
|
||||
test_cmp expected_putOut actual_putOut
|
||||
'
|
||||
|
||||
test_expect_success "'ipfs object put' from stdin succeeds" '
|
||||
cat ../t0051-object-data/testPut.json | ipfs object put > actual_putStdinOut
|
||||
'
|
||||
|
||||
test_expect_success "'ipfs object put' from stdin output looks good" '
|
||||
HASH="QmUTSAdDi2xsNkDtLqjFgQDMEn5di3Ab9eqbrt4gaiNbUD" &&
|
||||
printf "added $HASH" > expected_putStdinOut &&
|
||||
test_cmp expected_putStdinOut actual_putStdinOut
|
||||
'
|
||||
|
||||
test_expect_success "'ipfs object put' from stdin (pb) succeeds" '
|
||||
cat ../t0051-object-data/testPut.pb | ipfs object put --inputenc=protobuf > actual_putPbStdinOut
|
||||
'
|
||||
|
||||
test_expect_success "'ipfs object put' from stdin (pb) output looks good" '
|
||||
HASH="QmUTSAdDi2xsNkDtLqjFgQDMEn5di3Ab9eqbrt4gaiNbUD" &&
|
||||
printf "added $HASH" > expected_putStdinOut &&
|
||||
test_cmp expected_putStdinOut actual_putPbStdinOut
|
||||
'
|
||||
|
||||
|
||||
test_done
|
||||
Loading…
Reference in New Issue
Block a user