summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorDave Henderson <dhenderson@gmail.com>2018-08-24 21:12:11 -0400
committerDave Henderson <dhenderson@gmail.com>2018-09-24 23:22:40 -0400
commitcc0dc067c7362adfb1de802c86c3bab1601b5fe0 (patch)
treea59826f272902b2ba138c95e3a1eba6cfad7dda6 /net
parent2eeb9a78c06835db36b2df169e26334cb9d65c86 (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.go59
-rw-r--r--net/net_test.go27
2 files changed, 50 insertions, 36 deletions
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)
}