From cc0dc067c7362adfb1de802c86c3bab1601b5fe0 Mon Sep 17 00:00:00 2001 From: Dave Henderson Date: Fri, 24 Aug 2018 21:12:11 -0400 Subject: Return error instead of using log.Fatal Signed-off-by: Dave Henderson --- net/net.go | 59 ++++++++++++++++++++++++++++++++------------------------- net/net_test.go | 27 ++++++++++++++++---------- 2 files changed, 50 insertions(+), 36 deletions(-) (limited to 'net') diff --git a/net/net.go b/net/net.go index c0bfe594..e54ec5ae 100644 --- a/net/net.go +++ b/net/net.go @@ -1,62 +1,69 @@ package net import ( - "log" "net" ) // LookupIP - -func LookupIP(name string) string { - i := LookupIPs(name) +func LookupIP(name string) (string, error) { + i, err := LookupIPs(name) + if err != nil { + return "", err + } if len(i) == 0 { - return "" + return "", nil } - return i[0] + return i[0], nil } // LookupIPs - -func LookupIPs(name string) []string { +func LookupIPs(name string) ([]string, error) { srcIPs, err := net.LookupIP(name) if err != nil { - log.Fatal(err) + return nil, err } var ips []string for _, v := range srcIPs { - if v.To4() != nil { + if v.To4() != nil && !contains(ips, v.String()) { ips = append(ips, v.String()) } } - return ips + return ips, nil } -// LookupCNAME - -func LookupCNAME(name string) string { - cname, err := net.LookupCNAME(name) - if err != nil { - log.Fatal(err) +func contains(a []string, s string) bool { + for _, v := range a { + if v == s { + return true + } } - return cname + return false +} + +// LookupCNAME - +func LookupCNAME(name string) (string, error) { + return net.LookupCNAME(name) } // LookupTXT - -func LookupTXT(name string) []string { - records, err := net.LookupTXT(name) - if err != nil { - log.Fatal(err) - } - return records +func LookupTXT(name string) ([]string, error) { + return net.LookupTXT(name) } // LookupSRV - -func LookupSRV(name string) *net.SRV { - return LookupSRVs(name)[0] +func LookupSRV(name string) (*net.SRV, error) { + srvs, err := LookupSRVs(name) + if err != nil { + return nil, err + } + return srvs[0], nil } // LookupSRVs - -func LookupSRVs(name string) []*net.SRV { +func LookupSRVs(name string) ([]*net.SRV, error) { _, addrs, err := net.LookupSRV("", "", name) if err != nil { - log.Fatal(err) + return nil, err } - return addrs + return addrs, nil } diff --git a/net/net_test.go b/net/net_test.go index bcd17a9b..86399317 100644 --- a/net/net_test.go +++ b/net/net_test.go @@ -6,27 +6,34 @@ import ( "github.com/stretchr/testify/assert" ) +func must(r interface{}, err error) interface{} { + if err != nil { + panic(err) + } + return r +} func TestLookupIP(t *testing.T) { - assert.Equal(t, "127.0.0.1", LookupIP("localhost")) - assert.Equal(t, "169.254.255.254", LookupIP("hostlocal.io")) - assert.Equal(t, "93.184.216.34", LookupIP("example.com")) - + assert.Equal(t, "127.0.0.1", must(LookupIP("localhost"))) + assert.Equal(t, "169.254.255.254", must(LookupIP("hostlocal.io"))) + assert.Equal(t, "93.184.216.34", must(LookupIP("example.com"))) } func TestLookupIPs(t *testing.T) { - assert.Equal(t, "127.0.0.1", LookupIPs("localhost")[0]) - assert.Equal(t, []string{"169.254.255.254"}, LookupIPs("hostlocal.io")) - assert.Equal(t, []string{"93.184.216.34"}, LookupIPs("example.com")) + assert.Equal(t, []string{"127.0.0.1"}, must(LookupIPs("localhost"))) + assert.Equal(t, []string{"169.254.255.254"}, must(LookupIPs("hostlocal.io"))) + assert.Equal(t, []string{"93.184.216.34"}, must(LookupIPs("example.com"))) } func TestLookupTXT(t *testing.T) { - assert.NotEmpty(t, LookupTXT("example.com")) + assert.NotEmpty(t, must(LookupTXT("example.com"))) } func TestLookupCNAME(t *testing.T) { - assert.Equal(t, "hairyhenderson.ca.", LookupCNAME("www.hairyhenderson.ca.")) + assert.Equal(t, "hairyhenderson.ca.", must(LookupCNAME("www.hairyhenderson.ca."))) } func TestLookupSRV(t *testing.T) { - assert.Equal(t, uint16(5060), LookupSRV("_sip._udp.sip.voice.google.com").Port) + srv, err := LookupSRV("_sip._udp.sip.voice.google.com") + assert.NoError(t, err) + assert.Equal(t, uint16(5060), srv.Port) } -- cgit v1.2.3