mirror of
https://github.com/ipfs/kubo.git
synced 2025-06-20 02:21:48 +08:00
namesys: drop prefix args
License: MIT Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
This commit is contained in:
@ -40,7 +40,7 @@ type NameAPI interface {
|
|||||||
// Search is a version of Resolve which outputs paths as they are discovered,
|
// Search is a version of Resolve which outputs paths as they are discovered,
|
||||||
// reducing the time to first entry
|
// reducing the time to first entry
|
||||||
//
|
//
|
||||||
// Note that by default only the last path returned before the channel closes
|
// Note: by default, all paths read from the channel are considered unsafe,
|
||||||
// can be considered 'safe'.
|
// except the latest (last path in channel read buffer).
|
||||||
Search(ctx context.Context, name string, opts ...options.NameResolveOption) (<-chan IpnsResult, error)
|
Search(ctx context.Context, name string, opts ...options.NameResolveOption) (<-chan IpnsResult, error)
|
||||||
}
|
}
|
||||||
|
@ -21,14 +21,14 @@ type resolver interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// resolve is a helper for implementing Resolver.ResolveN using resolveOnce.
|
// resolve is a helper for implementing Resolver.ResolveN using resolveOnce.
|
||||||
func resolve(ctx context.Context, r resolver, name string, options opts.ResolveOpts, prefix string) (path.Path, error) {
|
func resolve(ctx context.Context, r resolver, name string, options opts.ResolveOpts) (path.Path, error) {
|
||||||
ctx, cancel := context.WithCancel(ctx)
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
err := ErrResolveFailed
|
err := ErrResolveFailed
|
||||||
var p path.Path
|
var p path.Path
|
||||||
|
|
||||||
resCh := resolveAsync(ctx, r, name, options, prefix)
|
resCh := resolveAsync(ctx, r, name, options)
|
||||||
|
|
||||||
for res := range resCh {
|
for res := range resCh {
|
||||||
p, err = res.Path, res.Err
|
p, err = res.Path, res.Err
|
||||||
@ -40,7 +40,7 @@ func resolve(ctx context.Context, r resolver, name string, options opts.ResolveO
|
|||||||
return p, err
|
return p, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func resolveAsync(ctx context.Context, r resolver, name string, options opts.ResolveOpts, prefix string) <-chan Result {
|
func resolveAsync(ctx context.Context, r resolver, name string, options opts.ResolveOpts) <-chan Result {
|
||||||
resCh := r.resolveOnceAsync(ctx, name, options)
|
resCh := r.resolveOnceAsync(ctx, name, options)
|
||||||
depth := options.Depth
|
depth := options.Depth
|
||||||
outCh := make(chan Result, 1)
|
outCh := make(chan Result, 1)
|
||||||
@ -86,8 +86,8 @@ func resolveAsync(ctx context.Context, r resolver, name string, options opts.Res
|
|||||||
subCtx, cancelSub = context.WithCancel(ctx)
|
subCtx, cancelSub = context.WithCancel(ctx)
|
||||||
defer cancelSub()
|
defer cancelSub()
|
||||||
|
|
||||||
p := strings.TrimPrefix(res.value.String(), prefix)
|
p := strings.TrimPrefix(res.value.String(), ipnsPrefix)
|
||||||
subCh = resolveAsync(subCtx, r, p, subopts, prefix)
|
subCh = resolveAsync(subCtx, r, p, subopts)
|
||||||
case res, ok := <-subCh:
|
case res, ok := <-subCh:
|
||||||
if !ok {
|
if !ok {
|
||||||
subCh = nil
|
subCh = nil
|
||||||
|
@ -28,12 +28,12 @@ func NewDNSResolver() *DNSResolver {
|
|||||||
|
|
||||||
// Resolve implements Resolver.
|
// Resolve implements Resolver.
|
||||||
func (r *DNSResolver) Resolve(ctx context.Context, name string, options ...opts.ResolveOpt) (path.Path, error) {
|
func (r *DNSResolver) Resolve(ctx context.Context, name string, options ...opts.ResolveOpt) (path.Path, error) {
|
||||||
return resolve(ctx, r, name, opts.ProcessOpts(options), "/ipns/")
|
return resolve(ctx, r, name, opts.ProcessOpts(options))
|
||||||
}
|
}
|
||||||
|
|
||||||
// ResolveAsync implements Resolver.
|
// ResolveAsync implements Resolver.
|
||||||
func (r *DNSResolver) ResolveAsync(ctx context.Context, name string, options ...opts.ResolveOpt) <-chan Result {
|
func (r *DNSResolver) ResolveAsync(ctx context.Context, name string, options ...opts.ResolveOpt) <-chan Result {
|
||||||
return resolveAsync(ctx, r, name, opts.ProcessOpts(options), "/ipns/")
|
return resolveAsync(ctx, r, name, opts.ProcessOpts(options))
|
||||||
}
|
}
|
||||||
|
|
||||||
type lookupRes struct {
|
type lookupRes struct {
|
||||||
|
@ -5,9 +5,10 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
opts "github.com/ipfs/go-ipfs/namesys/opts"
|
|
||||||
path "gx/ipfs/QmdrpbDgeYH3VxkCciQCJY5LkDYdXtig6unDzQmMxFtWEw/go-path"
|
path "gx/ipfs/QmdrpbDgeYH3VxkCciQCJY5LkDYdXtig6unDzQmMxFtWEw/go-path"
|
||||||
|
|
||||||
|
opts "github.com/ipfs/go-ipfs/namesys/opts"
|
||||||
|
|
||||||
testutil "gx/ipfs/QmNfQbgBfARAtrYsBguChX6VJ5nbjeoYy1KdC36aaYWqG8/go-testutil"
|
testutil "gx/ipfs/QmNfQbgBfARAtrYsBguChX6VJ5nbjeoYy1KdC36aaYWqG8/go-testutil"
|
||||||
u "gx/ipfs/QmPdKqUcHGFdeSpvjVoaTRPPstGif9GBZb5Q56RVw9o69A/go-ipfs-util"
|
u "gx/ipfs/QmPdKqUcHGFdeSpvjVoaTRPPstGif9GBZb5Q56RVw9o69A/go-ipfs-util"
|
||||||
routing "gx/ipfs/QmPmFeQ5oY5G6M7aBWggi5phxEPXwsQntE1DFcUzETULdp/go-libp2p-routing"
|
routing "gx/ipfs/QmPmFeQ5oY5G6M7aBWggi5phxEPXwsQntE1DFcUzETULdp/go-libp2p-routing"
|
||||||
@ -57,7 +58,7 @@ func TestResolverValidation(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Resolve entry
|
// Resolve entry
|
||||||
resp, err := resolve(ctx, resolver, id.Pretty(), opts.DefaultResolveOpts(), "/ipns/")
|
resp, err := resolve(ctx, resolver, id.Pretty(), opts.DefaultResolveOpts())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -77,7 +78,7 @@ func TestResolverValidation(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Record should fail validation because entry is expired
|
// Record should fail validation because entry is expired
|
||||||
_, err = resolve(ctx, resolver, id.Pretty(), opts.DefaultResolveOpts(), "/ipns/")
|
_, err = resolve(ctx, resolver, id.Pretty(), opts.DefaultResolveOpts())
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("ValidateIpnsRecord should have returned error")
|
t.Fatal("ValidateIpnsRecord should have returned error")
|
||||||
}
|
}
|
||||||
@ -99,7 +100,7 @@ func TestResolverValidation(t *testing.T) {
|
|||||||
|
|
||||||
// Record should fail validation because public key defined by
|
// Record should fail validation because public key defined by
|
||||||
// ipns path doesn't match record signature
|
// ipns path doesn't match record signature
|
||||||
_, err = resolve(ctx, resolver, id2.Pretty(), opts.DefaultResolveOpts(), "/ipns/")
|
_, err = resolve(ctx, resolver, id2.Pretty(), opts.DefaultResolveOpts())
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("ValidateIpnsRecord should have failed signature verification")
|
t.Fatal("ValidateIpnsRecord should have failed signature verification")
|
||||||
}
|
}
|
||||||
@ -117,7 +118,7 @@ func TestResolverValidation(t *testing.T) {
|
|||||||
|
|
||||||
// Record should fail validation because public key is not available
|
// Record should fail validation because public key is not available
|
||||||
// in peer store or on network
|
// in peer store or on network
|
||||||
_, err = resolve(ctx, resolver, id3.Pretty(), opts.DefaultResolveOpts(), "/ipns/")
|
_, err = resolve(ctx, resolver, id3.Pretty(), opts.DefaultResolveOpts())
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("ValidateIpnsRecord should have failed because public key was not found")
|
t.Fatal("ValidateIpnsRecord should have failed because public key was not found")
|
||||||
}
|
}
|
||||||
@ -132,7 +133,7 @@ func TestResolverValidation(t *testing.T) {
|
|||||||
// public key is available in the peer store by looking it up in
|
// public key is available in the peer store by looking it up in
|
||||||
// the DHT, which causes the DHT to fetch it and cache it in the
|
// the DHT, which causes the DHT to fetch it and cache it in the
|
||||||
// peer store
|
// peer store
|
||||||
_, err = resolve(ctx, resolver, id3.Pretty(), opts.DefaultResolveOpts(), "/ipns/")
|
_, err = resolve(ctx, resolver, id3.Pretty(), opts.DefaultResolveOpts())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ func (ns *mpns) Resolve(ctx context.Context, name string, options ...opts.Resolv
|
|||||||
return path.ParsePath("/ipfs/" + name)
|
return path.ParsePath("/ipfs/" + name)
|
||||||
}
|
}
|
||||||
|
|
||||||
return resolve(ctx, ns, name, opts.ProcessOpts(options), "/ipns/")
|
return resolve(ctx, ns, name, opts.ProcessOpts(options))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ns *mpns) ResolveAsync(ctx context.Context, name string, options ...opts.ResolveOpt) <-chan Result {
|
func (ns *mpns) ResolveAsync(ctx context.Context, name string, options ...opts.ResolveOpt) <-chan Result {
|
||||||
@ -79,7 +79,7 @@ func (ns *mpns) ResolveAsync(ctx context.Context, name string, options ...opts.R
|
|||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
return resolveAsync(ctx, ns, name, opts.ProcessOpts(options), "/ipns/")
|
return resolveAsync(ctx, ns, name, opts.ProcessOpts(options))
|
||||||
}
|
}
|
||||||
|
|
||||||
// resolveOnce implements resolver.
|
// resolveOnce implements resolver.
|
||||||
|
@ -4,16 +4,17 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
opts "github.com/ipfs/go-ipfs/namesys/opts"
|
|
||||||
proquint "gx/ipfs/QmYnf27kzqR2cxt6LFZdrAFJuQd6785fTkBvMuEj9EeRxM/proquint"
|
proquint "gx/ipfs/QmYnf27kzqR2cxt6LFZdrAFJuQd6785fTkBvMuEj9EeRxM/proquint"
|
||||||
path "gx/ipfs/QmdrpbDgeYH3VxkCciQCJY5LkDYdXtig6unDzQmMxFtWEw/go-path"
|
path "gx/ipfs/QmdrpbDgeYH3VxkCciQCJY5LkDYdXtig6unDzQmMxFtWEw/go-path"
|
||||||
|
|
||||||
|
opts "github.com/ipfs/go-ipfs/namesys/opts"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ProquintResolver struct{}
|
type ProquintResolver struct{}
|
||||||
|
|
||||||
// Resolve implements Resolver.
|
// Resolve implements Resolver.
|
||||||
func (r *ProquintResolver) Resolve(ctx context.Context, name string, options ...opts.ResolveOpt) (path.Path, error) {
|
func (r *ProquintResolver) Resolve(ctx context.Context, name string, options ...opts.ResolveOpt) (path.Path, error) {
|
||||||
return resolve(ctx, r, name, opts.ProcessOpts(options), "/ipns/")
|
return resolve(ctx, r, name, opts.ProcessOpts(options))
|
||||||
}
|
}
|
||||||
|
|
||||||
// resolveOnce implements resolver. Decodes the proquint string.
|
// resolveOnce implements resolver. Decodes the proquint string.
|
||||||
|
@ -5,9 +5,10 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
opts "github.com/ipfs/go-ipfs/namesys/opts"
|
|
||||||
path "gx/ipfs/QmdrpbDgeYH3VxkCciQCJY5LkDYdXtig6unDzQmMxFtWEw/go-path"
|
path "gx/ipfs/QmdrpbDgeYH3VxkCciQCJY5LkDYdXtig6unDzQmMxFtWEw/go-path"
|
||||||
|
|
||||||
|
opts "github.com/ipfs/go-ipfs/namesys/opts"
|
||||||
|
|
||||||
cid "gx/ipfs/QmPSQnBKM9g7BaUcZCvswUJVscQ1ipjmwxN5PXCjkp9EQ7/go-cid"
|
cid "gx/ipfs/QmPSQnBKM9g7BaUcZCvswUJVscQ1ipjmwxN5PXCjkp9EQ7/go-cid"
|
||||||
routing "gx/ipfs/QmPmFeQ5oY5G6M7aBWggi5phxEPXwsQntE1DFcUzETULdp/go-libp2p-routing"
|
routing "gx/ipfs/QmPmFeQ5oY5G6M7aBWggi5phxEPXwsQntE1DFcUzETULdp/go-libp2p-routing"
|
||||||
mh "gx/ipfs/QmPnFwZ2JXKnXgMw8CdBPxn7FWh6LLdjUjxV1fKHuJnkr8/go-multihash"
|
mh "gx/ipfs/QmPnFwZ2JXKnXgMw8CdBPxn7FWh6LLdjUjxV1fKHuJnkr8/go-multihash"
|
||||||
@ -39,12 +40,12 @@ func NewIpnsResolver(route routing.ValueStore) *IpnsResolver {
|
|||||||
|
|
||||||
// Resolve implements Resolver.
|
// Resolve implements Resolver.
|
||||||
func (r *IpnsResolver) Resolve(ctx context.Context, name string, options ...opts.ResolveOpt) (path.Path, error) {
|
func (r *IpnsResolver) Resolve(ctx context.Context, name string, options ...opts.ResolveOpt) (path.Path, error) {
|
||||||
return resolve(ctx, r, name, opts.ProcessOpts(options), "/ipns/")
|
return resolve(ctx, r, name, opts.ProcessOpts(options))
|
||||||
}
|
}
|
||||||
|
|
||||||
// ResolveAsync implements Resolver.
|
// ResolveAsync implements Resolver.
|
||||||
func (r *IpnsResolver) ResolveAsync(ctx context.Context, name string, options ...opts.ResolveOpt) <-chan Result {
|
func (r *IpnsResolver) ResolveAsync(ctx context.Context, name string, options ...opts.ResolveOpt) <-chan Result {
|
||||||
return resolveAsync(ctx, r, name, opts.ProcessOpts(options), "/ipns/")
|
return resolveAsync(ctx, r, name, opts.ProcessOpts(options))
|
||||||
}
|
}
|
||||||
|
|
||||||
// resolveOnce implements resolver. Uses the IPFS routing system to
|
// resolveOnce implements resolver. Uses the IPFS routing system to
|
||||||
|
Reference in New Issue
Block a user