1
1
package cmdenv
2
2
3
3
import (
4
+ "errors"
5
+
4
6
path "gx/ipfs/QmZErC2Ay6WuGi96CPg316PwitdwgLo6RxZRqVjJjRj2MR/go-path"
5
7
cmds "gx/ipfs/QmaAP56JAwdjwisPTu4yx17whcjTr6y5JCSCF77Y1rahWV/go-ipfs-cmds"
6
8
cidenc "gx/ipfs/QmdPQx9fvN5ExVwMhRmh7YpCQJzJrFhd1AjVBwJmRMFJeX/go-cidutil/cidenc"
@@ -62,7 +64,10 @@ func CidBaseDefined(req *cmds.Request) bool {
62
64
// the base encoder is returned. If you don't care about the error
63
65
// condiation it is safe to ignore the error returned.
64
66
func CidEncoderFromPath (enc cidenc.Encoder , p string ) (cidenc.Encoder , error ) {
65
- v := extractCidString (p )
67
+ v , err := extractCidString (p )
68
+ if err != nil {
69
+ return enc , err
70
+ }
66
71
if cidVer (v ) == 0 {
67
72
return cidenc.Encoder {Base : enc .Base , Upgrade : false }, nil
68
73
}
@@ -73,13 +78,16 @@ func CidEncoderFromPath(enc cidenc.Encoder, p string) (cidenc.Encoder, error) {
73
78
return cidenc.Encoder {Base : e , Upgrade : true }, nil
74
79
}
75
80
76
- func extractCidString (p string ) string {
77
- segs := path .FromString (p ).Segments ()
78
- v := segs [0 ]
79
- if v == "ipfs" || v == "ipld" && len (segs ) > 0 {
80
- v = segs [1 ]
81
+ func extractCidString (str string ) (string , error ) {
82
+ p , err := path .ParsePath (str )
83
+ if err != nil {
84
+ return "" , err
85
+ }
86
+ segs := p .Segments ()
87
+ if segs [0 ] == "ipfs" || segs [0 ] == "ipld" {
88
+ return segs [1 ], nil
81
89
}
82
- return v
90
+ return "" , errors . New ( "no CID found" )
83
91
}
84
92
85
93
func cidVer (v string ) int {
0 commit comments