mirror of
https://github.com/ipfs/kubo.git
synced 2025-06-22 12:51:19 +08:00
ipfs name resolve --stream
License: MIT Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
This commit is contained in:
@ -127,7 +127,7 @@ Resolve the value of a dnslink:
|
|||||||
recursive, _ := req.Options[recursiveOptionName].(bool)
|
recursive, _ := req.Options[recursiveOptionName].(bool)
|
||||||
rc, rcok := req.Options[dhtRecordCountOptionName].(int)
|
rc, rcok := req.Options[dhtRecordCountOptionName].(int)
|
||||||
dhtt, dhttok := req.Options[dhtTimeoutOptionName].(string)
|
dhtt, dhttok := req.Options[dhtTimeoutOptionName].(string)
|
||||||
|
stream, _ := req.Options[streamOptionName].(bool)
|
||||||
var ropts []nsopts.ResolveOpt
|
var ropts []nsopts.ResolveOpt
|
||||||
if !recursive {
|
if !recursive {
|
||||||
ropts = append(ropts, nsopts.Depth(1))
|
ropts = append(ropts, nsopts.Depth(1))
|
||||||
@ -150,13 +150,27 @@ Resolve the value of a dnslink:
|
|||||||
name = "/ipns/" + name
|
name = "/ipns/" + name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: better errors (in the case of not finding the name, we get "failed to find any peer in table")
|
||||||
|
|
||||||
|
if !stream {
|
||||||
output, err := resolver.Resolve(req.Context, name, ropts...)
|
output, err := resolver.Resolve(req.Context, name, ropts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: better errors (in the case of not finding the name, we get "failed to find any peer in table")
|
|
||||||
return cmds.EmitOnce(res, &ResolvedPath{output})
|
return cmds.EmitOnce(res, &ResolvedPath{output})
|
||||||
|
} else {
|
||||||
|
output := resolver.ResolveAsync(req.Context, name, ropts...)
|
||||||
|
for v := range output {
|
||||||
|
if v.Err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := res.Emit(&ResolvedPath{v.Path}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
Encoders: cmds.EncoderMap{
|
Encoders: cmds.EncoderMap{
|
||||||
cmds.Text: cmds.MakeEncoder(func(req *cmds.Request, w io.Writer, v interface{}) error {
|
cmds.Text: cmds.MakeEncoder(func(req *cmds.Request, w io.Writer, v interface{}) error {
|
||||||
|
@ -7,14 +7,14 @@ import (
|
|||||||
|
|
||||||
opts "github.com/ipfs/go-ipfs/namesys/opts"
|
opts "github.com/ipfs/go-ipfs/namesys/opts"
|
||||||
|
|
||||||
"gx/ipfs/QmU4x3742bvgfxJsByEDpBnifJqjJdV6x528co4hwKCn46/go-unixfs"
|
|
||||||
path "gx/ipfs/QmcjwUb36Z16NJkvDX6ccXPqsFswo6AsRXynyXcLLCphV2/go-path"
|
|
||||||
ci "gx/ipfs/QmPvyPwuCgJ7pDmrKDxRtsScJgBaM5h4EpRL2qQJsmXf4n/go-libp2p-crypto"
|
ci "gx/ipfs/QmPvyPwuCgJ7pDmrKDxRtsScJgBaM5h4EpRL2qQJsmXf4n/go-libp2p-crypto"
|
||||||
offroute "gx/ipfs/QmScZySgru9jaoDa12sSfvh21sWbqF5eXkieTmJzAHJXkQ/go-ipfs-routing/offline"
|
offroute "gx/ipfs/QmScZySgru9jaoDa12sSfvh21sWbqF5eXkieTmJzAHJXkQ/go-ipfs-routing/offline"
|
||||||
|
"gx/ipfs/QmU4x3742bvgfxJsByEDpBnifJqjJdV6x528co4hwKCn46/go-unixfs"
|
||||||
ds "gx/ipfs/QmUyz7JTJzgegC6tiJrfby3mPhzcdswVtG4x58TQ6pq8jV/go-datastore"
|
ds "gx/ipfs/QmUyz7JTJzgegC6tiJrfby3mPhzcdswVtG4x58TQ6pq8jV/go-datastore"
|
||||||
dssync "gx/ipfs/QmUyz7JTJzgegC6tiJrfby3mPhzcdswVtG4x58TQ6pq8jV/go-datastore/sync"
|
dssync "gx/ipfs/QmUyz7JTJzgegC6tiJrfby3mPhzcdswVtG4x58TQ6pq8jV/go-datastore/sync"
|
||||||
ipns "gx/ipfs/QmZrmn2BPZbSviQAWeyY2iXkCukmJHv9n7zrLgWU5KgbTb/go-ipns"
|
ipns "gx/ipfs/QmZrmn2BPZbSviQAWeyY2iXkCukmJHv9n7zrLgWU5KgbTb/go-ipns"
|
||||||
peer "gx/ipfs/QmbNepETomvmXfz1X5pHNFD2QuPqnqi47dTd94QJWSorQ3/go-libp2p-peer"
|
peer "gx/ipfs/QmbNepETomvmXfz1X5pHNFD2QuPqnqi47dTd94QJWSorQ3/go-libp2p-peer"
|
||||||
|
path "gx/ipfs/QmcjwUb36Z16NJkvDX6ccXPqsFswo6AsRXynyXcLLCphV2/go-path"
|
||||||
pstoremem "gx/ipfs/QmfAQMFpgDU2U4BXG64qVr8HSiictfWvkSBz7Y2oDj65st/go-libp2p-peerstore/pstoremem"
|
pstoremem "gx/ipfs/QmfAQMFpgDU2U4BXG64qVr8HSiictfWvkSBz7Y2oDj65st/go-libp2p-peerstore/pstoremem"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user