Skip to content

Commit 1542d6e

Browse files
committed
wip: path consolidation
1 parent 400dc1b commit 1542d6e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+458
-260
lines changed

assets/assets.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import (
99
"github.com/ipfs/kubo/core/coreapi"
1010

1111
options "github.com/ipfs/boxo/coreiface/options"
12-
"github.com/ipfs/boxo/coreiface/path"
1312
"github.com/ipfs/boxo/files"
13+
"github.com/ipfs/boxo/path"
1414
cid "github.com/ipfs/go-cid"
1515
)
1616

@@ -44,7 +44,7 @@ func addAssetList(nd *core.IpfsNode, l []string) (cid.Cid, error) {
4444
return cid.Cid{}, err
4545
}
4646

47-
basePath := path.IpfsPath(dirb.Cid())
47+
basePath := path.NewIPFSPath(dirb.Cid())
4848

4949
for _, p := range l {
5050
d, err := Asset.ReadFile(p)

client/rpc/api_test.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import (
1212
"time"
1313

1414
iface "github.com/ipfs/boxo/coreiface"
15-
"github.com/ipfs/boxo/coreiface/path"
1615
"github.com/ipfs/boxo/coreiface/tests"
16+
"github.com/ipfs/boxo/path"
1717
"github.com/ipfs/kubo/test/cli/harness"
1818
ma "github.com/multiformats/go-multiaddr"
1919
"go.uber.org/multierr"
@@ -70,7 +70,11 @@ func (np NodeProvider) MakeAPISwarm(t *testing.T, ctx context.Context, fullIdent
7070
apis[i] = api
7171

7272
// empty node is pinned even with --empty-repo, we don't want that
73-
emptyNode := path.New("/ipfs/QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn")
73+
emptyNode, err := path.NewPath("/ipfs/QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn")
74+
if err != nil {
75+
return err
76+
}
77+
7478
if err := api.Pin().Rm(ctx, emptyNode); err != nil {
7579
return err
7680
}
@@ -126,7 +130,11 @@ func Test_NewURLApiWithClient_With_Headers(t *testing.T) {
126130
t.Fatal(err)
127131
}
128132
api.Headers.Set(headerToTest, expectedHeaderValue)
129-
if err := api.Pin().Rm(context.Background(), path.New("/ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv")); err != nil {
133+
p, err := path.NewPath("/ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv")
134+
if err != nil {
135+
t.Fatal(err)
136+
}
137+
if err := api.Pin().Rm(context.Background(), p); err != nil {
130138
t.Fatal(err)
131139
}
132140
}

client/rpc/apifile.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@ import (
66
"fmt"
77
"io"
88

9-
"github.com/ipfs/boxo/coreiface/path"
109
"github.com/ipfs/boxo/files"
1110
unixfs "github.com/ipfs/boxo/ipld/unixfs"
11+
"github.com/ipfs/boxo/path"
1212
"github.com/ipfs/go-cid"
1313
)
1414

1515
const forwardSeekLimit = 1 << 14 // 16k
1616

1717
func (api *UnixfsAPI) Get(ctx context.Context, p path.Path) (files.Node, error) {
18-
if p.Mutable() { // use resolved path in case we are dealing with IPNS / MFS
18+
if p.Namespace().Mutable() { // use resolved path in case we are dealing with IPNS / MFS
1919
var err error
2020
p, err = api.core().ResolvePath(ctx, p)
2121
if err != nil {
@@ -195,13 +195,13 @@ func (it *apiIter) Next() bool {
195195

196196
switch it.cur.Type {
197197
case unixfs.THAMTShard, unixfs.TMetadata, unixfs.TDirectory:
198-
it.curFile, err = it.core.getDir(it.ctx, path.IpfsPath(c), int64(it.cur.Size))
198+
it.curFile, err = it.core.getDir(it.ctx, path.NewIPFSPath(c), int64(it.cur.Size))
199199
if err != nil {
200200
it.err = err
201201
return false
202202
}
203203
case unixfs.TFile:
204-
it.curFile, err = it.core.getFile(it.ctx, path.IpfsPath(c), int64(it.cur.Size))
204+
it.curFile, err = it.core.getFile(it.ctx, path.NewIPFSPath(c), int64(it.cur.Size))
205205
if err != nil {
206206
it.err = err
207207
return false

client/rpc/block.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88

99
iface "github.com/ipfs/boxo/coreiface"
1010
caopts "github.com/ipfs/boxo/coreiface/options"
11-
"github.com/ipfs/boxo/coreiface/path"
11+
"github.com/ipfs/boxo/path"
1212
"github.com/ipfs/go-cid"
1313
mc "github.com/multiformats/go-multicodec"
1414
mh "github.com/multiformats/go-multihash"
@@ -27,8 +27,8 @@ func (s *blockStat) Size() int {
2727
return s.BSize
2828
}
2929

30-
func (s *blockStat) Path() path.Resolved {
31-
return path.IpldPath(s.cid)
30+
func (s *blockStat) Path() path.ImmutablePath {
31+
return path.NewIPLDPath(s.cid)
3232
}
3333

3434
func (api *BlockAPI) Put(ctx context.Context, r io.Reader, opts ...caopts.BlockPutOption) (iface.BlockStat, error) {

client/rpc/dag.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import (
77
"io"
88

99
"github.com/ipfs/boxo/coreiface/options"
10-
"github.com/ipfs/boxo/coreiface/path"
11-
"github.com/ipfs/go-block-format"
10+
"github.com/ipfs/boxo/path"
11+
blocks "github.com/ipfs/go-block-format"
1212
"github.com/ipfs/go-cid"
1313
format "github.com/ipfs/go-ipld-format"
1414
multicodec "github.com/multiformats/go-multicodec"
@@ -21,7 +21,7 @@ type (
2121
)
2222

2323
func (api *HttpDagServ) Get(ctx context.Context, c cid.Cid) (format.Node, error) {
24-
r, err := api.core().Block().Get(ctx, path.IpldPath(c))
24+
r, err := api.core().Block().Get(ctx, path.NewIPLDPath(c))
2525
if err != nil {
2626
return nil, err
2727
}
@@ -116,7 +116,7 @@ func (api *HttpDagServ) Pinning() format.NodeAdder {
116116
}
117117

118118
func (api *HttpDagServ) Remove(ctx context.Context, c cid.Cid) error {
119-
return api.core().Block().Rm(ctx, path.IpldPath(c)) // TODO: should we force rm?
119+
return api.core().Block().Rm(ctx, path.NewIPLDPath(c)) // TODO: should we force rm?
120120
}
121121

122122
func (api *HttpDagServ) RemoveMany(ctx context.Context, cids []cid.Cid) error {

client/rpc/dht.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"encoding/json"
66

77
caopts "github.com/ipfs/boxo/coreiface/options"
8-
"github.com/ipfs/boxo/coreiface/path"
8+
"github.com/ipfs/boxo/path"
99
"github.com/libp2p/go-libp2p/core/peer"
1010
"github.com/libp2p/go-libp2p/core/routing"
1111
)

client/rpc/key.go

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import (
66

77
iface "github.com/ipfs/boxo/coreiface"
88
caopts "github.com/ipfs/boxo/coreiface/options"
9-
"github.com/ipfs/boxo/coreiface/path"
9+
"github.com/ipfs/boxo/ipns"
10+
"github.com/ipfs/boxo/path"
1011
"github.com/libp2p/go-libp2p/core/peer"
1112
)
1213

@@ -16,15 +17,16 @@ type keyOutput struct {
1617
JName string `json:"Name"`
1718
Id string
1819

19-
pid peer.ID
20+
pid peer.ID
21+
path path.Path
2022
}
2123

2224
func (k *keyOutput) Name() string {
2325
return k.JName
2426
}
2527

2628
func (k *keyOutput) Path() path.Path {
27-
return path.New("/ipns/" + k.Id)
29+
return k.path
2830
}
2931

3032
func (k *keyOutput) ID() peer.ID {
@@ -45,8 +47,18 @@ func (api *KeyAPI) Generate(ctx context.Context, name string, opts ...caopts.Key
4547
if err != nil {
4648
return nil, err
4749
}
50+
4851
out.pid, err = peer.Decode(out.Id)
49-
return &out, err
52+
if err != nil {
53+
return nil, err
54+
}
55+
56+
out.path, err = path.NewPath("/ipns/" + ipns.NameFromPeer(out.pid).String())
57+
if err != nil {
58+
return nil, err
59+
}
60+
61+
return &out, nil
5062
}
5163

5264
func (api *KeyAPI) Rename(ctx context.Context, oldName string, newName string, opts ...caopts.KeyRenameOption) (iface.Key, bool, error) {

client/rpc/name.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import (
99
iface "github.com/ipfs/boxo/coreiface"
1010
caopts "github.com/ipfs/boxo/coreiface/options"
1111
nsopts "github.com/ipfs/boxo/coreiface/options/namesys"
12-
"github.com/ipfs/boxo/coreiface/path"
1312
"github.com/ipfs/boxo/ipns"
13+
"github.com/ipfs/boxo/path"
1414
)
1515

1616
type NameAPI HttpApi
@@ -84,7 +84,11 @@ func (api *NameAPI) Search(ctx context.Context, name string, opts ...caopts.Name
8484
}
8585
var ires iface.IpnsResult
8686
if err == nil {
87-
ires.Path = path.New(out.Path)
87+
p, err := path.NewPath(out.Path)
88+
if err != nil {
89+
return
90+
}
91+
ires.Path = p
8892
}
8993

9094
select {
@@ -122,7 +126,7 @@ func (api *NameAPI) Resolve(ctx context.Context, name string, opts ...caopts.Nam
122126
return nil, err
123127
}
124128

125-
return path.New(out.Path), nil
129+
return path.NewPath(out.Path)
126130
}
127131

128132
func (api *NameAPI) core() *HttpApi {

client/rpc/object.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ import (
88

99
iface "github.com/ipfs/boxo/coreiface"
1010
caopts "github.com/ipfs/boxo/coreiface/options"
11-
"github.com/ipfs/boxo/coreiface/path"
1211
"github.com/ipfs/boxo/ipld/merkledag"
1312
ft "github.com/ipfs/boxo/ipld/unixfs"
13+
"github.com/ipfs/boxo/path"
1414
"github.com/ipfs/go-cid"
1515
ipld "github.com/ipfs/go-ipld-format"
1616
)
@@ -40,7 +40,7 @@ func (api *ObjectAPI) New(ctx context.Context, opts ...caopts.ObjectNewOption) (
4040
return n, nil
4141
}
4242

43-
func (api *ObjectAPI) Put(ctx context.Context, r io.Reader, opts ...caopts.ObjectPutOption) (path.Resolved, error) {
43+
func (api *ObjectAPI) Put(ctx context.Context, r io.Reader, opts ...caopts.ObjectPutOption) (path.ImmutablePath, error) {
4444
options, err := caopts.ObjectPutOptions(opts...)
4545
if err != nil {
4646
return nil, err
@@ -62,7 +62,7 @@ func (api *ObjectAPI) Put(ctx context.Context, r io.Reader, opts ...caopts.Objec
6262
return nil, err
6363
}
6464

65-
return path.IpfsPath(c), nil
65+
return path.NewIPFSPath(c), nil
6666
}
6767

6868
func (api *ObjectAPI) Get(ctx context.Context, p path.Path) (ipld.Node, error) {
@@ -153,7 +153,7 @@ func (api *ObjectAPI) Stat(ctx context.Context, p path.Path) (*iface.ObjectStat,
153153
}, nil
154154
}
155155

156-
func (api *ObjectAPI) AddLink(ctx context.Context, base path.Path, name string, child path.Path, opts ...caopts.ObjectAddLinkOption) (path.Resolved, error) {
156+
func (api *ObjectAPI) AddLink(ctx context.Context, base path.Path, name string, child path.Path, opts ...caopts.ObjectAddLinkOption) (path.ImmutablePath, error) {
157157
options, err := caopts.ObjectAddLinkOptions(opts...)
158158
if err != nil {
159159
return nil, err
@@ -172,10 +172,10 @@ func (api *ObjectAPI) AddLink(ctx context.Context, base path.Path, name string,
172172
return nil, err
173173
}
174174

175-
return path.IpfsPath(c), nil
175+
return path.NewIPFSPath(c), nil
176176
}
177177

178-
func (api *ObjectAPI) RmLink(ctx context.Context, base path.Path, link string) (path.Resolved, error) {
178+
func (api *ObjectAPI) RmLink(ctx context.Context, base path.Path, link string) (path.ImmutablePath, error) {
179179
var out objectOut
180180
err := api.core().Request("object/patch/rm-link", base.String(), link).
181181
Exec(ctx, &out)
@@ -188,10 +188,10 @@ func (api *ObjectAPI) RmLink(ctx context.Context, base path.Path, link string) (
188188
return nil, err
189189
}
190190

191-
return path.IpfsPath(c), nil
191+
return path.NewIPFSPath(c), nil
192192
}
193193

194-
func (api *ObjectAPI) AppendData(ctx context.Context, p path.Path, r io.Reader) (path.Resolved, error) {
194+
func (api *ObjectAPI) AppendData(ctx context.Context, p path.Path, r io.Reader) (path.ImmutablePath, error) {
195195
var out objectOut
196196
err := api.core().Request("object/patch/append-data", p.String()).
197197
FileBody(r).
@@ -205,10 +205,10 @@ func (api *ObjectAPI) AppendData(ctx context.Context, p path.Path, r io.Reader)
205205
return nil, err
206206
}
207207

208-
return path.IpfsPath(c), nil
208+
return path.NewIPFSPath(c), nil
209209
}
210210

211-
func (api *ObjectAPI) SetData(ctx context.Context, p path.Path, r io.Reader) (path.Resolved, error) {
211+
func (api *ObjectAPI) SetData(ctx context.Context, p path.Path, r io.Reader) (path.ImmutablePath, error) {
212212
var out objectOut
213213
err := api.core().Request("object/patch/set-data", p.String()).
214214
FileBody(r).
@@ -222,7 +222,7 @@ func (api *ObjectAPI) SetData(ctx context.Context, p path.Path, r io.Reader) (pa
222222
return nil, err
223223
}
224224

225-
return path.IpfsPath(c), nil
225+
return path.NewIPFSPath(c), nil
226226
}
227227

228228
type change struct {
@@ -246,10 +246,10 @@ func (api *ObjectAPI) Diff(ctx context.Context, a path.Path, b path.Path) ([]ifa
246246
Path: ch.Path,
247247
}
248248
if ch.Before != cid.Undef {
249-
res[i].Before = path.IpfsPath(ch.Before)
249+
res[i].Before = path.NewIPFSPath(ch.Before)
250250
}
251251
if ch.After != cid.Undef {
252-
res[i].After = path.IpfsPath(ch.After)
252+
res[i].After = path.NewIPFSPath(ch.After)
253253
}
254254
}
255255
return res, nil

client/rpc/path.go

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,12 @@ package rpc
33
import (
44
"context"
55

6-
"github.com/ipfs/boxo/coreiface/path"
7-
ipfspath "github.com/ipfs/boxo/path"
6+
"github.com/ipfs/boxo/path"
87
cid "github.com/ipfs/go-cid"
98
ipld "github.com/ipfs/go-ipld-format"
109
)
1110

12-
func (api *HttpApi) ResolvePath(ctx context.Context, p path.Path) (path.Resolved, error) {
11+
func (api *HttpApi) ResolvePath(ctx context.Context, p path.Path) (path.ImmutablePath, error) {
1312
var out struct {
1413
Cid cid.Cid
1514
RemPath string
@@ -18,7 +17,7 @@ func (api *HttpApi) ResolvePath(ctx context.Context, p path.Path) (path.Resolved
1817
// TODO: this is hacky, fixing https://github.com/ipfs/go-ipfs/issues/5703 would help
1918

2019
var err error
21-
if p.Namespace() == "ipns" {
20+
if p.Namespace() == path.IPNSNamespace {
2221
if p, err = api.Name().Resolve(ctx, p.String()); err != nil {
2322
return nil, err
2423
}
@@ -28,18 +27,12 @@ func (api *HttpApi) ResolvePath(ctx context.Context, p path.Path) (path.Resolved
2827
return nil, err
2928
}
3029

31-
// TODO:
32-
ipath, err := ipfspath.FromSegments("/"+p.Namespace()+"/", out.Cid.String(), out.RemPath)
30+
p, err = path.NewPathFromSegments(p.Namespace().String(), out.Cid.String(), out.RemPath)
3331
if err != nil {
3432
return nil, err
3533
}
3634

37-
root, err := cid.Parse(ipfspath.Path(p.String()).Segments()[1])
38-
if err != nil {
39-
return nil, err
40-
}
41-
42-
return path.NewResolvedPath(ipath, out.Cid, root, out.RemPath), nil
35+
return path.NewImmutablePath(p)
4336
}
4437

4538
func (api *HttpApi) ResolveNode(ctx context.Context, p path.Path) (ipld.Node, error) {

0 commit comments

Comments
 (0)