@cryptotaxi247 / kubo / commits / 1e6594d08

namesys/dns: Pluggable lookupTXT field

So we can attach a mock lookup function for testing.

W. Trevor King committed May 16, 2015 at 09:33 UTC 1e6594d087bc47e278d91fb1b41c077f298064d7
3 files changed +17 -3
core/commands/dns.go
+1 -1
@@ -56,7 +56,7 @@ The resolver will give:
56
57 recursive, _, _ := req.Option("recursive").Bool()
58 name := req.Arguments()[0]
59 - var resolver namesys.DNSResolver
59 + resolver := namesys.NewDNSResolver()
60
61 depth := 1
62 if recursive {
namesys/dns.go
+15 -1
@@ -11,12 +11,26 @@ import (
11 path "github.com/ipfs/go-ipfs/path"
12 )
13
14 +type LookupTXTFunc func(name string) (txt []string, err error)
15 +
16 // DNSResolver implements a Resolver on DNS domains
17 type DNSResolver struct {
18 + lookupTXT LookupTXTFunc
19 // TODO: maybe some sort of caching?
20 // cache would need a timeout
21 }
22
23 +// NewDNSResolver constructs a name resolver using DNS TXT records.
24 +func NewDNSResolver() Resolver {
25 + return &DNSResolver{lookupTXT: net.LookupTXT}
26 +}
27 +
28 +// newDNSResolver constructs a name resolver using DNS TXT records,
29 +// returning a resolver instead of NewDNSResolver's Resolver.
30 +func newDNSResolver() resolver {
31 + return &DNSResolver{lookupTXT: net.LookupTXT}
32 +}
33 +
34 // Resolve implements Resolver.
35 func (r *DNSResolver) Resolve(ctx context.Context, name string) (path.Path, error) {
36 return r.ResolveN(ctx, name, DefaultDepthLimit)
@@ -36,7 +50,7 @@ func (r *DNSResolver) resolveOnce(ctx context.Context, name string) (path.Path,
50 }
51
52 log.Infof("DNSResolver resolving %s", name)
39 - txt, err := net.LookupTXT(name)
53 + txt, err := r.lookupTXT(name)
54 if err != nil {
55 return "", err
56 }
namesys/namesys.go
+1 -1
@@ -27,7 +27,7 @@ type mpns struct {
27 func NewNameSystem(r routing.IpfsRouting) NameSystem {
28 return &mpns{
29 resolvers: map[string]resolver{
30 - "dns": new(DNSResolver),
30 + "dns": newDNSResolver(),
31 "proquint": new(ProquintResolver),
32 "dht": newRoutingResolver(r),
33 },