-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathLocations.go
127 lines (102 loc) · 2.85 KB
/
Locations.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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package pterodactyl
import (
"encoding/json"
"fmt"
"net/http"
)
// GetLocations - Returns list of locations
func (c *Client) GetLocations() ([]Location, error) {
req, err := http.NewRequest("GET", fmt.Sprintf("%s/api/application/locations", c.HostURL), nil)
if err != nil {
return nil, err
}
body, err := c.doRequest(req, nil)
if err != nil {
return nil, err
}
var locationList LocationsResponse
err = json.Unmarshal(body, &locationList)
if err != nil {
return nil, err
}
locationsData := locationList.Data
locations := make([]Location, len(locationsData))
for i, locationData := range locationsData {
locations[i] = locationData.Attributes
}
return locations, nil
}
// GetLocation - Returns information about a specific location
func (c *Client) GetLocation(locationID int32) (Location, error) {
req, err := http.NewRequest("GET", fmt.Sprintf("%s/api/application/locations/%d", c.HostURL, locationID), nil)
if err != nil {
return Location{}, err
}
body, err := c.doRequest(req, nil)
if err != nil {
return Location{}, err
}
var response LocationResponse
err = json.Unmarshal(body, &response)
if err != nil {
return Location{}, err
}
location := response.Attributes
return location, nil
}
// CreateLocation - Creates a new location
func (c *Client) CreateLocation(location LocationInterface) (Location, error) {
partialLocation := PartialLocation{
Short: location.GetShort(),
Long: location.GetLong(),
}
req, err := http.NewRequest("POST", fmt.Sprintf("%s/api/application/locations", c.HostURL), c.prepareBody(partialLocation))
if err != nil {
return Location{}, err
}
body, err := c.doRequest(req, nil)
if err != nil {
return Location{}, err
}
var response LocationResponse
err = json.Unmarshal(body, &response)
if err != nil {
return Location{}, err
}
newLocation := response.Attributes
return newLocation, nil
}
// UpdateLocation - Updates a location
func (c *Client) UpdateLocation(locationID int32, location LocationInterface) (Location, error) {
partialLocation := PartialLocation{
Short: location.GetShort(),
Long: location.GetLong(),
}
req, err := http.NewRequest("PATCH", fmt.Sprintf("%s/api/application/locations/%d", c.HostURL, locationID), c.prepareBody(partialLocation))
if err != nil {
return Location{}, err
}
body, err := c.doRequest(req, nil)
if err != nil {
return Location{}, err
}
var response LocationResponse
err = json.Unmarshal(body, &response)
if err != nil {
return Location{}, err
}
updatedLocation := response.Attributes
return updatedLocation, nil
}
// DeleteLocation - Deletes a location
func (c *Client) DeleteLocation(locationID int32) error {
req, err := http.NewRequest("DELETE", fmt.Sprintf("%s/api/application/locations/%d", c.HostURL, locationID), nil)
if err != nil {
return err
}
_, err = c.doRequest(req, nil)
if err != nil {
return err
}
return nil
}