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
#