version.go raw
1 package rest
2
3 import (
4 "fmt"
5 "net/http"
6
7 "gopkg.in/ns1/ns1-go.v2/rest/model/dns"
8 )
9
10 // VersionsService handles 'zones/ZONE/versions' related endpoints.
11 type VersionsService service
12
13 // List returns all versions for a zone.
14 //
15 // NS1 API docs: https://ns1.com/api/#zones-get
16 func (s *VersionsService) List(zone string) ([]*dns.Version, *http.Response, error) {
17 path := fmt.Sprintf("zones/%s/versions", zone)
18 req, err := s.client.NewRequest("GET", path, nil)
19 if err != nil {
20 return nil, nil, err
21 }
22
23 vl := []*dns.Version{}
24 var resp *http.Response
25 resp, err = s.client.Do(req, &vl)
26
27 if err != nil {
28 return nil, resp, err
29 }
30
31 return vl, resp, nil
32 }
33
34 // Create creates a new version for a zone
35 //
36 // NS1 API docs: https://ns1.com/api/#zones-get
37 func (s *VersionsService) Create(zone string, force bool) (*dns.Version, *http.Response, error) {
38 path := fmt.Sprintf("zones/%s/versions?force=%t", zone, force)
39 req, err := s.client.NewRequest("PUT", path, nil)
40 if err != nil {
41 return nil, nil, err
42 }
43
44 var v dns.Version
45 var resp *http.Response
46 resp, err = s.client.Do(req, &v)
47 if err != nil {
48 return nil, resp, err
49 }
50
51 return &v, resp, nil
52 }
53
54 // Delete deletes a zone version
55 //
56 // NS1 API docs: https://ns1.com/api/#zones-get
57 func (s *VersionsService) Delete(zone string, versionID int) (*http.Response, error) {
58 path := fmt.Sprintf("zones/%s/versions/%d", zone, versionID)
59 req, err := s.client.NewRequest("DELETE", path, nil)
60 if err != nil {
61 return nil, err
62 }
63
64 var v dns.Version
65 var resp *http.Response
66 resp, err = s.client.Do(req, &v)
67 if err != nil {
68 return resp, err
69 }
70
71 return resp, nil
72 }
73
74 // Activate activates a zone version
75 //
76 // NS1 API docs: https://ns1.com/api/#zones-get
77 func (s *VersionsService) Activate(zone string, versionID int) (*http.Response, error) {
78 path := fmt.Sprintf("/v1/zones/%s/versions/%d/activate", zone, versionID)
79 req, err := s.client.NewRequest("POST", path, nil)
80 if err != nil {
81 return nil, err
82 }
83
84 var v dns.Version
85 var resp *http.Response
86 resp, err = s.client.Do(req, &v)
87 if err != nil {
88 return resp, err
89 }
90
91 return resp, nil
92 }
93