@cryptotaxi247 / kubo / commits / cf6e3219b

cmd/block: add selection of multihash parameters to block put command

License: MIT Signed-off-by: Jeromy <why@ipfs.io>

Jeromy committed Dec 7, 2016 at 16:36 UTC cf6e3219b63ae335679b87377e8795d2e8e570e2
2 files changed +32 -3
core/commands/block.go
+19 -3
@@ -117,6 +117,8 @@ It reads from stdin, and <key> is a base58 encoded multihash.
117 },
118 Options: []cmds.Option{
119 cmds.StringOption("format", "f", "cid format for blocks to be created with.").Default("v0"),
120 + cmds.StringOption("mhtype", "multihash hash function").Default("sha2-256"),
121 + cmds.IntOption("mhlen", "multihash hash length").Default(-1),
122 },
123 Run: func(req cmds.Request, res cmds.Response) {
124 n, err := req.InvocContext().GetNode()
@@ -143,11 +145,10 @@ It reads from stdin, and <key> is a base58 encoded multihash.
145 return
146 }
147
146 - format, _, _ := req.Option("format").String()
148 var pref cid.Prefix
148 - pref.MhType = mh.SHA2_256
149 - pref.MhLength = -1
149 pref.Version = 1
150 +
151 + format, _, _ := req.Option("format").String()
152 switch format {
153 case "cbor":
154 pref.Codec = cid.DagCBOR
@@ -163,6 +164,21 @@ It reads from stdin, and <key> is a base58 encoded multihash.
164 return
165 }
166
167 + mhtype, _, _ := req.Option("mhtype").String()
168 + mhtval, ok := mh.Names[mhtype]
169 + if !ok {
170 + res.SetError(fmt.Errorf("unrecognized multihash function: %s", mhtype), cmds.ErrNormal)
171 + return
172 + }
173 + pref.MhType = mhtval
174 +
175 + mhlen, _, err := req.Option("mhlen").Int()
176 + if err != nil {
177 + res.SetError(err, cmds.ErrNormal)
178 + return
179 + }
180 + pref.MhLength = mhlen
181 +
182 bcid, err := pref.Sum(data)
183 if err != nil {
184 res.SetError(err, cmds.ErrNormal)
test/sharness/t0050-block.sh
+13
@@ -184,6 +184,19 @@ test_expect_success "block get output looks right" '
184 test_cmp pb_block_out ../t0051-object-data/testPut.pb
185 '
186
187 +test_expect_success "can set multihash type and length on block put" '
188 + HASH=$(echo "foooo" | ipfs block put --format=raw --mhtype=sha3 --mhlen=16)
189 +'
190 +
191 +test_expect_success "output looks good" '
192 + test "z25ScPysKoxJBcPxczn9NvuHiZU5" = "$HASH"
193 +'
194 +
195 +test_expect_success "can read block with different hash" '
196 + ipfs block get $HASH > blk_get_out &&
197 + echo "foooo" > blk_get_exp &&
198 + test_cmp blk_get_exp blk_get_out
199 +'
200 #
201 # Misc tests
202 #