@cryptotaxi247 / kubo / commits / 7046626ec

Move pathresolve

License: MIT Signed-off-by: Łukasz Magiera <magik6k@gmail.com>

Łukasz Magiera committed Apr 3, 2019 at 03:51 UTC 7046626eccfb1d8e1c500a637c4f85dbef373972
7 files changed +33 -25
core/commands/refs.go
+2 -1
@@ -9,6 +9,7 @@ import (
9
10 core "github.com/ipfs/go-ipfs/core"
11 cmdenv "github.com/ipfs/go-ipfs/core/commands/cmdenv"
12 + "github.com/ipfs/go-ipfs/namesys/resolve"
13
14 cid "github.com/ipfs/go-cid"
15 cidenc "github.com/ipfs/go-cidutil/cidenc"
@@ -173,7 +174,7 @@ func objectsForPaths(ctx context.Context, n *core.IpfsNode, paths []string) ([]i
174 return nil, err
175 }
176
176 - o, err := core.Resolve(ctx, n.Namesys, n.Resolver, p)
177 + o, err := resolve.Resolve(ctx, n.Namesys, n.Resolver, p)
178 if err != nil {
179 return nil, err
180 }
core/commands/tar.go
+2 -2
@@ -4,8 +4,8 @@ import (
4 "fmt"
5 "io"
6
7 - "github.com/ipfs/go-ipfs/core"
7 "github.com/ipfs/go-ipfs/core/commands/cmdenv"
8 + "github.com/ipfs/go-ipfs/namesys/resolve"
9 tar "github.com/ipfs/go-ipfs/tar"
10
11 "github.com/ipfs/go-ipfs-cmdkit"
@@ -97,7 +97,7 @@ var tarCatCmd = &cmds.Command{
97 return err
98 }
99
100 - root, err := core.Resolve(req.Context, nd.Namesys, nd.Resolver, p)
100 + root, err := resolve.Resolve(req.Context, nd.Namesys, nd.Resolver, p)
101 if err != nil {
102 return err
103 }
core/coreapi/path.go
+3 -3
@@ -5,7 +5,7 @@ import (
5 "fmt"
6 gopath "path"
7
8 - "github.com/ipfs/go-ipfs/core"
8 + node2 "github.com/ipfs/go-ipfs/namesys/resolve"
9
10 "github.com/ipfs/go-cid"
11 ipld "github.com/ipfs/go-ipld-format"
@@ -42,8 +42,8 @@ func (api *CoreAPI) ResolvePath(ctx context.Context, p path.Path) (path.Resolved
42 }
43
44 ipath := ipfspath.Path(p.String())
45 - ipath, err := core.ResolveIPNS(ctx, api.namesys, ipath)
46 - if err == core.ErrNoNamesys {
45 + ipath, err := node2.ResolveIPNS(ctx, api.namesys, ipath)
46 + if err == node2.ErrNoNamesys {
47 return nil, coreiface.ErrOffline
48 } else if err != nil {
49 return nil, err
core/corehttp/gateway_handler.go
+2 -1
@@ -14,6 +14,7 @@ import (
14
15 "github.com/ipfs/go-ipfs/core"
16 "github.com/ipfs/go-ipfs/dagutils"
17 + "github.com/ipfs/go-ipfs/namesys/resolve"
18
19 "github.com/dustin/go-humanize"
20 "github.com/ipfs/go-cid"
@@ -423,7 +424,7 @@ func (i *gatewayHandler) putHandler(w http.ResponseWriter, r *http.Request) {
424 }
425
426 var newcid cid.Cid
426 - rnode, err := core.Resolve(ctx, i.node.Namesys, i.node.Resolver, rootPath)
427 + rnode, err := resolve.Resolve(ctx, i.node.Namesys, i.node.Resolver, rootPath)
428 switch ev := err.(type) {
429 case resolver.ErrNoLink:
430 // ev.Node < node where resolve failed
fuse/ipns/ipns_unix.go
+3 -1
@@ -13,6 +13,8 @@ import (
13
14 core "github.com/ipfs/go-ipfs/core"
15 namesys "github.com/ipfs/go-ipfs/namesys"
16 + node2 "github.com/ipfs/go-ipfs/namesys/resolve"
17 +
18 dag "github.com/ipfs/go-merkledag"
19 path "github.com/ipfs/go-path"
20 ft "github.com/ipfs/go-unixfs"
@@ -96,7 +98,7 @@ func loadRoot(ctx context.Context, rt *keyRoot, ipfs *core.IpfsNode, name string
98 return nil, err
99 }
100
99 - node, err := core.Resolve(ctx, ipfs.Namesys, ipfs.Resolver, p)
101 + node, err := node2.Resolve(ctx, ipfs.Namesys, ipfs.Resolver, p)
102 switch err {
103 case nil:
104 case namesys.ErrResolveFailed:
namesys/resolve/pathresolver_test.go renamed
+6 -5
@@ -1,10 +1,11 @@
1 -package core_test
1 +package resolve_test
2
3 import (
4 "testing"
5
6 - core "github.com/ipfs/go-ipfs/core"
6 coremock "github.com/ipfs/go-ipfs/core/mock"
7 + "github.com/ipfs/go-ipfs/namesys/resolve"
8 +
9 path "github.com/ipfs/go-path"
10 )
11
@@ -14,17 +15,17 @@ func TestResolveNoComponents(t *testing.T) {
15 t.Fatal("Should have constructed a mock node", err)
16 }
17
17 - _, err = core.Resolve(n.Context(), n.Namesys, n.Resolver, path.Path("/ipns/"))
18 + _, err = resolve.Resolve(n.Context(), n.Namesys, n.Resolver, path.Path("/ipns/"))
19 if err != path.ErrNoComponents {
20 t.Fatal("Should error with no components (/ipns/).", err)
21 }
22
22 - _, err = core.Resolve(n.Context(), n.Namesys, n.Resolver, path.Path("/ipfs/"))
23 + _, err = resolve.Resolve(n.Context(), n.Namesys, n.Resolver, path.Path("/ipfs/"))
24 if err != path.ErrNoComponents {
25 t.Fatal("Should error with no components (/ipfs/).", err)
26 }
27
27 - _, err = core.Resolve(n.Context(), n.Namesys, n.Resolver, path.Path("/../.."))
28 + _, err = resolve.Resolve(n.Context(), n.Namesys, n.Resolver, path.Path("/../.."))
29 if err != path.ErrBadPath {
30 t.Fatal("Should error with invalid path.", err)
31 }
namesys/resolve/resolve.go renamed
+15 -12
@@ -1,18 +1,21 @@
1 -package core
1 +package resolve
2
3 import (
4 "context"
5 "errors"
6 "strings"
7
8 - namesys "github.com/ipfs/go-ipfs/namesys"
9 -
10 - ipld "github.com/ipfs/go-ipld-format"
8 + "github.com/ipfs/go-ipld-format"
9 + log2 "github.com/ipfs/go-log"
10 logging "github.com/ipfs/go-log"
12 - path "github.com/ipfs/go-path"
13 - resolver "github.com/ipfs/go-path/resolver"
11 + "github.com/ipfs/go-path"
12 + "github.com/ipfs/go-path/resolver"
13 +
14 + "github.com/ipfs/go-ipfs/namesys"
15 )
16
17 +var log = logging.Logger("nsresolv")
18 +
19 // ErrNoNamesys is an explicit error for when an IPFS node doesn't
20 // (yet) have a name system
21 var ErrNoNamesys = errors.New(
@@ -27,34 +30,34 @@ func ResolveIPNS(ctx context.Context, nsys namesys.NameSystem, p path.Path) (pat
30
31 // TODO(cryptix): we should be able to query the local cache for the path
32 if nsys == nil {
30 - evt.Append(logging.LoggableMap{"error": ErrNoNamesys.Error()})
33 + evt.Append(log2.LoggableMap{"error": ErrNoNamesys.Error()})
34 return "", ErrNoNamesys
35 }
36
37 seg := p.Segments()
38
39 if len(seg) < 2 || seg[1] == "" { // just "/<protocol/>" without further segments
37 - evt.Append(logging.LoggableMap{"error": path.ErrNoComponents.Error()})
40 + evt.Append(log2.LoggableMap{"error": path.ErrNoComponents.Error()})
41 return "", path.ErrNoComponents
42 }
43
44 extensions := seg[2:]
45 resolvable, err := path.FromSegments("/", seg[0], seg[1])
46 if err != nil {
44 - evt.Append(logging.LoggableMap{"error": err.Error()})
47 + evt.Append(log2.LoggableMap{"error": err.Error()})
48 return "", err
49 }
50
51 respath, err := nsys.Resolve(ctx, resolvable.String())
52 if err != nil {
50 - evt.Append(logging.LoggableMap{"error": err.Error()})
53 + evt.Append(log2.LoggableMap{"error": err.Error()})
54 return "", err
55 }
56
57 segments := append(respath.Segments(), extensions...)
58 p, err = path.FromSegments("/", segments...)
59 if err != nil {
57 - evt.Append(logging.LoggableMap{"error": err.Error()})
60 + evt.Append(log2.LoggableMap{"error": err.Error()})
61 return "", err
62 }
63 }
@@ -64,7 +67,7 @@ func ResolveIPNS(ctx context.Context, nsys namesys.NameSystem, p path.Path) (pat
67 // Resolve resolves the given path by parsing out protocol-specific
68 // entries (e.g. /ipns/<node-key>) and then going through the /ipfs/
69 // entries and returning the final node.
67 -func Resolve(ctx context.Context, nsys namesys.NameSystem, r *resolver.Resolver, p path.Path) (ipld.Node, error) {
70 +func Resolve(ctx context.Context, nsys namesys.NameSystem, r *resolver.Resolver, p path.Path) (format.Node, error) {
71 p, err := ResolveIPNS(ctx, nsys, p)
72 if err != nil {
73 return nil, err