/
hub.go
85 lines (67 loc) · 1.89 KB
/
hub.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
package content
import (
"encoding/json"
"fmt"
"net/http"
"time"
)
type Hub struct {
ID string `json:"id,omitempty"`
Name string `json:"name"`
Label string `json:"label"`
Description string `json:"description"`
Status string `json:"status"`
CreatedBy string `json:"createdBy"`
CreatedDate *time.Time `json:"createdDate"`
LastModifiedBy string `json:"lastModifiedBy"`
LastModifiedDate *time.Time `json:"lastModifiedDate"`
}
type HubResults struct {
Links map[string]Link `json:"_links"`
Page PageInformation `json:"page"`
Items []Hub
}
func (r *HubResults) UnmarshalJSON(data []byte) error {
generic := GenericListResults{}
if err := json.Unmarshal(data, &generic); err != nil {
return err
}
if err := decodeStruct(generic.Embedded["hubs"], &r.Items); err != nil {
return err
}
r.Links = generic.Links
r.Page = generic.Page
return nil
}
func (client *Client) HubList(parameters PaginationParameters) (HubResults, error) {
parameters.Sort = "" // Sort is not supported.
result := HubResults{}
endpoint := fmt.Sprintf("/hubs?%s", PaginationQueryString(parameters))
err := client.request(http.MethodGet, endpoint, nil, &result)
return result, err
}
func (client *Client) HubGetAll() ([]Hub, error) {
parameters := PaginationParameters{}
response, err := client.HubList(parameters)
var result []Hub
result = append(result, response.Items...)
for parameters.Page < response.Page.TotalPages-1 {
parameters.Page++
response, err := client.HubList(parameters)
if err != nil {
break
}
result = append(result, response.Items...)
}
return result, err
}
func (client *Client) HubCreate() {
}
func (client *Client) HubUpdate() {
}
func (client *Client) HubGet(ID string) (Hub, error) {
endpoint := fmt.Sprintf("/hubs/%s", ID)
result := Hub{}
err := client.request(http.MethodGet, endpoint, nil, &result)
return result, err
}