From 1e6594d087bc47e278d91fb1b41c077f298064d7 Mon Sep 17 00:00:00 2001 From: "W. Trevor King" <wking@tremily.us> Date: Sat, 16 May 2015 09:33:22 -0700 Subject: [PATCH] namesys/dns: Pluggable lookupTXT field So we can attach a mock lookup function for testing. --- core/commands/dns.go | 2 +- namesys/dns.go | 16 +++++++++++++++- namesys/namesys.go | 2 +- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/core/commands/dns.go b/core/commands/dns.go index 900f0ee1e..e24b6a483 100644 --- a/core/commands/dns.go +++ b/core/commands/dns.go @@ -56,7 +56,7 @@ The resolver will give: recursive, _, _ := req.Option("recursive").Bool() name := req.Arguments()[0] - var resolver namesys.DNSResolver + resolver := namesys.NewDNSResolver() depth := 1 if recursive { diff --git a/namesys/dns.go b/namesys/dns.go index f57ddce59..3703bd8d0 100644 --- a/namesys/dns.go +++ b/namesys/dns.go @@ -11,12 +11,26 @@ import ( path "github.com/ipfs/go-ipfs/path" ) +type LookupTXTFunc func(name string) (txt []string, err error) + // DNSResolver implements a Resolver on DNS domains type DNSResolver struct { + lookupTXT LookupTXTFunc // TODO: maybe some sort of caching? // cache would need a timeout } +// NewDNSResolver constructs a name resolver using DNS TXT records. +func NewDNSResolver() Resolver { + return &DNSResolver{lookupTXT: net.LookupTXT} +} + +// newDNSResolver constructs a name resolver using DNS TXT records, +// returning a resolver instead of NewDNSResolver's Resolver. +func newDNSResolver() resolver { + return &DNSResolver{lookupTXT: net.LookupTXT} +} + // Resolve implements Resolver. func (r *DNSResolver) Resolve(ctx context.Context, name string) (path.Path, error) { return r.ResolveN(ctx, name, DefaultDepthLimit) @@ -36,7 +50,7 @@ func (r *DNSResolver) resolveOnce(ctx context.Context, name string) (path.Path, } log.Infof("DNSResolver resolving %s", name) - txt, err := net.LookupTXT(name) + txt, err := r.lookupTXT(name) if err != nil { return "", err } diff --git a/namesys/namesys.go b/namesys/namesys.go index 0f5b853be..7fe317b66 100644 --- a/namesys/namesys.go +++ b/namesys/namesys.go @@ -27,7 +27,7 @@ type mpns struct { func NewNameSystem(r routing.IpfsRouting) NameSystem { return &mpns{ resolvers: map[string]resolver{ - "dns": new(DNSResolver), + "dns": newDNSResolver(), "proquint": new(ProquintResolver), "dht": newRoutingResolver(r), }, -- GitLab