forked from equinixmetal-archive/packngo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vpn.go
50 lines (39 loc) · 1.2 KB
/
vpn.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package packngo
import "fmt"
const vpnBasePath = "/user/vpn"
// VPNConfig struct
type VPNConfig struct {
Config string `json:"config,omitempty"`
}
// VPNService interface defines available VPN functions
type VPNService interface {
Enable() (*Response, error)
Disable() (*Response, error)
Get(code string, getOpt *GetOptions) (*VPNConfig, *Response, error)
}
// VPNServiceOp implements VPNService
type VPNServiceOp struct {
client *Client
}
// Enable VPN for current user
func (s *VPNServiceOp) Enable() (resp *Response, err error) {
return s.client.DoRequest("POST", vpnBasePath, nil, nil)
}
// Disable VPN for current user
func (s *VPNServiceOp) Disable() (resp *Response, err error) {
return s.client.DoRequest("DELETE", vpnBasePath, nil, nil)
}
// Get returns the client vpn config for the currently logged-in user.
func (s *VPNServiceOp) Get(code string, getOpt *GetOptions) (config *VPNConfig, resp *Response, err error) {
params := createGetOptionsURL(getOpt)
config = &VPNConfig{}
path := fmt.Sprintf("%s?code=%s", vpnBasePath, code)
if params != "" {
path += params
}
resp, err = s.client.DoRequest("GET", path, nil, config)
if err != nil {
return nil, resp, err
}
return config, resp, err
}