mirror of
https://github.com/ipfs/kubo.git
synced 2025-08-05 19:02:21 +08:00
base32: make GetEncoderFromPath more robust
Primarily, get rid of extractCidString and cidVer. Neither of these functions did sane things when a path when a path didn't actually include a CID. For example, "boo" would yield a base32 encoder. Also: * Avoid "optional" errors. * Make it a pure function of the input path. * Extract the multibase from *any* type of path of the form /namespace/cid-like-thing/... This is a DWIM function. License: MIT Signed-off-by: Steven Allen <steven@stebalien.com>
This commit is contained in:
@ -16,6 +16,7 @@ import (
|
||||
path "gx/ipfs/QmNYPETsdAu2uQ1k9q9S1jYEGURaLHV6cbYRSVFVRftpF8/go-path"
|
||||
|
||||
cmds "gx/ipfs/QmWGm4AbZEbnmdgVTza52MSNpEmBdFVqzmAysRbjrRyGbH/go-ipfs-cmds"
|
||||
cidenc "gx/ipfs/QmdPQx9fvN5ExVwMhRmh7YpCQJzJrFhd1AjVBwJmRMFJeX/go-cidutil/cidenc"
|
||||
cmdkit "gx/ipfs/Qmde5VP1qUkyQXKCfmEUA7bP64V2HAptbJ7phuPp7jXWwg/go-ipfs-cmdkit"
|
||||
)
|
||||
|
||||
@ -82,12 +83,21 @@ Resolve the value of an IPFS DAG path:
|
||||
name := req.Arguments[0]
|
||||
recursive, _ := req.Options[resolveRecursiveOptionName].(bool)
|
||||
|
||||
enc, err := cmdenv.GetCidEncoder(req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !cmdenv.CidBaseDefined(req) {
|
||||
enc, _ = cmdenv.CidEncoderFromPath(enc, name)
|
||||
var enc cidenc.Encoder
|
||||
switch {
|
||||
case !cmdenv.CidBaseDefined(req):
|
||||
// Not specified, check the path.
|
||||
enc, err = cmdenv.CidEncoderFromPath(name)
|
||||
if err == nil {
|
||||
break
|
||||
}
|
||||
// Nope, fallback on the default.
|
||||
fallthrough
|
||||
default:
|
||||
enc, err = cmdenv.GetCidEncoder(req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// the case when ipns is resolved step by step
|
||||
|
Reference in New Issue
Block a user