diff options
| author | Dave Henderson <dhenderson@gmail.com> | 2018-08-24 21:12:11 -0400 |
|---|---|---|
| committer | Dave Henderson <dhenderson@gmail.com> | 2018-09-24 23:22:40 -0400 |
| commit | cc0dc067c7362adfb1de802c86c3bab1601b5fe0 (patch) | |
| tree | a59826f272902b2ba138c95e3a1eba6cfad7dda6 /net | |
| parent | 2eeb9a78c06835db36b2df169e26334cb9d65c86 (diff) | |
Return error instead of using log.Fatal
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'net')
| -rw-r--r-- | net/net.go | 59 | ||||
| -rw-r--r-- | net/net_test.go | 27 |
2 files changed, 50 insertions, 36 deletions
@@ -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) } |
