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