@cryptotaxi247 / kubo / commits / f69cf0744

ipfs name resolve --stream

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

Łukasz Magiera committed Aug 29, 2018 at 01:03 UTC f69cf07444b91db5238813e43e1562b9916cde1d
2 files changed +23 -9
core/commands/name/ipns.go
+21 -7
@@ -127,7 +127,7 @@ Resolve the value of a dnslink:
127 recursive, _ := req.Options[recursiveOptionName].(bool)
128 rc, rcok := req.Options[dhtRecordCountOptionName].(int)
129 dhtt, dhttok := req.Options[dhtTimeoutOptionName].(string)
130 -
130 + stream, _ := req.Options[streamOptionName].(bool)
131 var ropts []nsopts.ResolveOpt
132 if !recursive {
133 ropts = append(ropts, nsopts.Depth(1))
@@ -150,13 +150,27 @@ Resolve the value of a dnslink:
150 name = "/ipns/" + name
151 }
152
153 - output, err := resolver.Resolve(req.Context, name, ropts...)
154 - if err != nil {
155 - return err
156 - }
157 -
153 // TODO: better errors (in the case of not finding the name, we get "failed to find any peer in table")
159 - return cmds.EmitOnce(res, &ResolvedPath{output})
154 +
155 + if !stream {
156 + output, err := resolver.Resolve(req.Context, name, ropts...)
157 + if err != nil {
158 + return err
159 + }
160 +
161 + return cmds.EmitOnce(res, &ResolvedPath{output})
162 + } else {
163 + output := resolver.ResolveAsync(req.Context, name, ropts...)
164 + for v := range output {
165 + if v.Err != nil {
166 + return err
167 + }
168 + if err := res.Emit(&ResolvedPath{v.Path}); err != nil {
169 + return err
170 + }
171 + }
172 + }
173 + return nil
174 },
175 Encoders: cmds.EncoderMap{
176 cmds.Text: cmds.MakeEncoder(func(req *cmds.Request, w io.Writer, v interface{}) error {
namesys/namesys_test.go
+2 -2
@@ -7,14 +7,14 @@ import (
7
8 opts "github.com/ipfs/go-ipfs/namesys/opts"
9
10 - "gx/ipfs/QmU4x3742bvgfxJsByEDpBnifJqjJdV6x528co4hwKCn46/go-unixfs"
11 - path "gx/ipfs/QmcjwUb36Z16NJkvDX6ccXPqsFswo6AsRXynyXcLLCphV2/go-path"
10 ci "gx/ipfs/QmPvyPwuCgJ7pDmrKDxRtsScJgBaM5h4EpRL2qQJsmXf4n/go-libp2p-crypto"
11 offroute "gx/ipfs/QmScZySgru9jaoDa12sSfvh21sWbqF5eXkieTmJzAHJXkQ/go-ipfs-routing/offline"
12 + "gx/ipfs/QmU4x3742bvgfxJsByEDpBnifJqjJdV6x528co4hwKCn46/go-unixfs"
13 ds "gx/ipfs/QmUyz7JTJzgegC6tiJrfby3mPhzcdswVtG4x58TQ6pq8jV/go-datastore"
14 dssync "gx/ipfs/QmUyz7JTJzgegC6tiJrfby3mPhzcdswVtG4x58TQ6pq8jV/go-datastore/sync"
15 ipns "gx/ipfs/QmZrmn2BPZbSviQAWeyY2iXkCukmJHv9n7zrLgWU5KgbTb/go-ipns"
16 peer "gx/ipfs/QmbNepETomvmXfz1X5pHNFD2QuPqnqi47dTd94QJWSorQ3/go-libp2p-peer"
17 + path "gx/ipfs/QmcjwUb36Z16NJkvDX6ccXPqsFswo6AsRXynyXcLLCphV2/go-path"
18 pstoremem "gx/ipfs/QmfAQMFpgDU2U4BXG64qVr8HSiictfWvkSBz7Y2oDj65st/go-libp2p-peerstore/pstoremem"
19 )
20