Skip to content

Commit f94bc4b

Browse files
authored
Merge pull request #6 from liquidweb/DNSZone
added DNSZone endpoints
2 parents 0e6a50d + b0a9ef0 commit f94bc4b

File tree

10 files changed

+622
-5
lines changed

10 files changed

+622
-5
lines changed

.gitignore

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# If you prefer the allow list template instead of the deny list, see community template:
2+
# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore
3+
#
4+
# Binaries for programs and plugins
5+
*.exe
6+
*.exe~
7+
*.dll
8+
*.so
9+
*.dylib
10+
11+
# Test binary, built with `go test -c`
12+
*.test
13+
14+
# Output of the go coverage tool, specifically when used with LiteIDE
15+
*.out
16+
17+
# Dependency directories (remove the comment below to include it)
18+
# vendor/
19+
20+
# Go workspace file
21+
go.work
22+
23+
.lwapi.toml
24+
.envrc

client/api.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package client
22

33
import (
4-
lwApi "github.com/liquidweb/go-lwApi"
4+
lwApi "github.com/liquidweb/liquidweb-go/lib/legacy"
55

66
"github.com/liquidweb/liquidweb-go/asset"
77
network "github.com/liquidweb/liquidweb-go/network"
@@ -12,6 +12,7 @@ import (
1212
// API is the structure that houses all of our various API clients that interact with various Storm resources.
1313
type API struct {
1414
NetworkDNS network.DNSBackend
15+
NetworkDNSZone network.DNSZoneBackend
1516
NetworkLoadBalancer network.LoadBalancerBackend
1617
NetworkVIP network.VIPBackend
1718
NetworkZone network.ZoneBackend
@@ -38,6 +39,7 @@ func NewAPI(username string, password string, url string, timeout int) (*API, er
3839
}
3940

4041
api := &API{
42+
NetworkDNSZone: &network.DNSZoneClient{Backend: client.httpClient},
4143
NetworkDNS: &network.DNSClient{Backend: client.httpClient},
4244
NetworkLoadBalancer: &network.LoadBalancerClient{Backend: client.httpClient},
4345
NetworkVIP: &network.VIPClient{Backend: client.httpClient},

client/client.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package client
22

33
import (
4-
lwApi "github.com/liquidweb/go-lwApi"
4+
lwApi "github.com/liquidweb/liquidweb-go/lib/legacy"
55
)
66

77
// Client provides the HTTP backend.

examples/dns_client_test.go

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package network
2+
3+
import (
4+
"flag"
5+
"log"
6+
"os"
7+
"strings"
8+
"testing"
9+
10+
"github.com/liquidweb/liquidweb-go/client"
11+
"github.com/liquidweb/liquidweb-go/network"
12+
"github.com/stretchr/testify/assert"
13+
"github.com/stretchr/testify/require"
14+
)
15+
16+
var liveTest = flag.Bool("live", false, "set true to run live test")
17+
var testZone = flag.String("zone", "", "given zone for dns tests")
18+
19+
func TestLiveListRecords(t *testing.T) {
20+
if !*liveTest {
21+
t.Skip("skipping live test")
22+
}
23+
if strings.TrimSpace(*testZone) == "" {
24+
t.Skip("skipping zone test without zone")
25+
}
26+
27+
username, password := os.Getenv("LWAPI_USERNAME"), os.Getenv("LWAPI_PASSWORD")
28+
url := "https://api.liquidweb.com"
29+
timeout := 60
30+
31+
api, err := client.NewAPI(username, password, url, timeout)
32+
require.NoError(t, err, "failed to create API")
33+
34+
reqParams := network.DNSRecordParams{
35+
Zone: *testZone,
36+
}
37+
38+
dnsRecords, err := api.NetworkDNS.List(&reqParams)
39+
require.NoError(t, err, "got an error using parameters %#v", reqParams)
40+
assert.NotZero(t, len(dnsRecords.Items))
41+
records := []string{}
42+
for _, each := range dnsRecords.Items {
43+
records = append(records, (each.Name + " => " + each.RData))
44+
}
45+
log.Printf("all zones on zone %s:\n%s\n",
46+
*testZone, strings.Join(records, "\n"))
47+
}
48+
49+
func TestLiveZones(t *testing.T) {
50+
if !*liveTest {
51+
t.Skip("skipping live test")
52+
}
53+
54+
username, password := os.Getenv("LWAPI_USERNAME"), os.Getenv("LWAPI_PASSWORD")
55+
url := "https://api.liquidweb.com"
56+
timeout := 60
57+
58+
api, err := client.NewAPI(username, password, url, timeout)
59+
require.NoError(t, err, "failed to create API")
60+
61+
dnsZones, err := api.NetworkDNSZone.ListAll()
62+
require.NoError(t, err, "got an error sting domains")
63+
assert.NotZero(t, len(dnsZones.Items))
64+
zones := []string{}
65+
for _, each := range dnsZones.Items {
66+
zones = append(zones, each.Name)
67+
}
68+
log.Printf("all zones on account:\n%s\n", strings.Join(zones, "\n"))
69+
}
70+
71+
func TestLiveRecordsListAll(t *testing.T) {
72+
if !*liveTest {
73+
t.Skip("skipping live test")
74+
}
75+
if strings.TrimSpace(*testZone) == "" {
76+
t.Skip("skipping zone test without zone")
77+
}
78+
79+
username, password := os.Getenv("LWAPI_USERNAME"), os.Getenv("LWAPI_PASSWORD")
80+
url := "https://api.liquidweb.com"
81+
timeout := 60
82+
83+
api, err := client.NewAPI(username, password, url, timeout)
84+
require.NoError(t, err, "failed to create API")
85+
86+
dnsRecords, err := api.NetworkDNS.ListAll(*testZone)
87+
require.NoError(t, err, "got an error listing records")
88+
assert.NotZero(t, len(dnsRecords.Items))
89+
records := []string{}
90+
for _, each := range dnsRecords.Items {
91+
records = append(records, (each.Name + " => " + each.RData))
92+
}
93+
log.Printf("all zones on zone %s:\n%s\n",
94+
*testZone, strings.Join(records, "\n"))
95+
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ module github.com/liquidweb/liquidweb-go
33
go 1.12
44

55
require (
6-
github.com/liquidweb/go-lwApi v0.0.5
76
github.com/liquidweb/liquidweb-cli v0.6.9
7+
github.com/stretchr/testify v1.5.1
88
)

go.sum

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,6 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
112112
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
113113
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
114114
github.com/liquidweb/go-lwApi v0.0.0-20190605172801-52a4864d2738/go.mod h1:0sYF9rMXb0vlG+4SzdiGMXHheCZxjguMq+Zb4S2BfBs=
115-
github.com/liquidweb/go-lwApi v0.0.5 h1:CT4cdXzJXmo0bon298kS7NeSk+Gt8/UHpWBBol1NGCA=
116-
github.com/liquidweb/go-lwApi v0.0.5/go.mod h1:0sYF9rMXb0vlG+4SzdiGMXHheCZxjguMq+Zb4S2BfBs=
117115
github.com/liquidweb/liquidweb-cli v0.6.9 h1:acbIvdRauiwbxIsOCEMXGwF75aSJDbDiyAWPjVnwoYM=
118116
github.com/liquidweb/liquidweb-cli v0.6.9/go.mod h1:cE1uvQ+x24NGUL75D0QagOFCG8Wdvmwu8aL9TLmA/eQ=
119117
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=

0 commit comments

Comments
 (0)