account_whitelist.go raw
1 package rest
2
3 import (
4 "errors"
5 "fmt"
6 "net/http"
7
8 "gopkg.in/ns1/ns1-go.v2/rest/model/account"
9 )
10
11 // GlobalIPWhitelistService handles 'account/whitelist' endpoint.
12 type GlobalIPWhitelistService service
13
14 // List returns all global IP whitelists in the account.
15 func (s *GlobalIPWhitelistService) List() ([]*account.IPWhitelist, *http.Response, error) {
16 req, err := s.client.NewRequest("GET", "account/whitelist", nil)
17 if err != nil {
18 return nil, nil, err
19 }
20
21 wl := []*account.IPWhitelist{}
22 resp, err := s.client.Do(req, &wl)
23 if err != nil {
24 return nil, resp, err
25 }
26
27 return wl, resp, nil
28 }
29
30 // Get returns details of a single global IP whitelist.
31 func (s *GlobalIPWhitelistService) Get(id string) (*account.IPWhitelist, *http.Response, error) {
32 path := fmt.Sprintf("account/whitelist/%s", id)
33
34 req, err := s.client.NewRequest("GET", path, nil)
35 if err != nil {
36 return nil, nil, err
37 }
38
39 var wl account.IPWhitelist
40 resp, err := s.client.Do(req, &wl)
41 if err != nil {
42 switch err.(type) {
43 case *Error:
44 if resourceMissingMatch(err.(*Error).Message) {
45 return nil, resp, ErrIPWhitelistMissing
46 }
47 }
48 return nil, resp, err
49 }
50
51 return &wl, resp, nil
52 }
53
54 // Create takes a *IPWhitelist and creates a new global IP whitelist.
55 func (s *GlobalIPWhitelistService) Create(wl *account.IPWhitelist) (*http.Response, error) {
56 req, err := s.client.NewRequest("PUT", "account/whitelist", wl)
57 if err != nil {
58 return nil, err
59 }
60
61 resp, err := s.client.Do(req, &wl)
62 if err != nil {
63 return resp, err
64 }
65
66 return resp, nil
67 }
68
69 // Update changes the name or values for a global IP whitelist.
70 func (s *GlobalIPWhitelistService) Update(wl *account.IPWhitelist) (*http.Response, error) {
71 path := fmt.Sprintf("account/whitelist/%s", wl.ID)
72
73 req, err := s.client.NewRequest("POST", path, wl)
74 if err != nil {
75 return nil, err
76 }
77
78 resp, err := s.client.Do(req, &wl)
79 if err != nil {
80 switch err.(type) {
81 case *Error:
82 if resourceMissingMatch(err.(*Error).Message) {
83 return resp, ErrIPWhitelistMissing
84 }
85 }
86 return resp, err
87 }
88
89 return resp, nil
90 }
91
92 // Delete deletes a global IP whitelist.
93 func (s *GlobalIPWhitelistService) Delete(id string) (*http.Response, error) {
94 path := fmt.Sprintf("account/whitelist/%s", id)
95
96 req, err := s.client.NewRequest("DELETE", path, nil)
97 if err != nil {
98 return nil, err
99 }
100
101 resp, err := s.client.Do(req, nil)
102 if err != nil {
103 switch err.(type) {
104 case *Error:
105 if resourceMissingMatch(err.(*Error).Message) {
106 return resp, ErrIPWhitelistMissing
107 }
108 }
109 return resp, err
110 }
111
112 return resp, nil
113 }
114
115 var (
116 // ErrIPWhitelistMissing bundles GET/POST/DELETE error.
117 ErrIPWhitelistMissing = errors.New("whitelist does not exist")
118 )
119