-
Notifications
You must be signed in to change notification settings - Fork 29
/
accounts.go
128 lines (106 loc) · 3.24 KB
/
accounts.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
128
package aiven
import (
"context"
"errors"
"time"
)
type (
// AccountsHandler Aiven go-client handler for Accounts
AccountsHandler struct {
client *Client
}
// AccountsResponse represents Accounts (list of accounts) response
AccountsResponse struct {
APIResponse
Accounts []Account `json:"accounts"`
}
// AccountResponse represents a Account response
AccountResponse struct {
APIResponse
Account Account `json:"account"`
}
// Account represents account
Account struct {
Id string `json:"account_id,omitempty"`
Name string `json:"account_name"`
OwnerTeamId string `json:"account_owner_team_id,omitempty"`
CreateTime *time.Time `json:"create_time,omitempty"`
UpdateTime *time.Time `json:"update_time,omitempty"`
BillingEnabled bool `json:"account_billing_enabled,omitempty"`
TenantId string `json:"tenant_id,omitempty"`
PrimaryBillingGroupId string `json:"primary_billing_group_id,omitempty"`
IsAccountOwner bool `json:"is_account_owner,omitempty"`
ParentAccountId string `json:"parent_account_id,omitempty"`
OrganizationId string `json:"organization_id,omitempty"`
}
)
// List returns a list of all existing accounts
func (h AccountsHandler) List(ctx context.Context) (*AccountsResponse, error) {
path := buildPath("account")
bts, err := h.client.doGetRequest(ctx, path, nil)
if err != nil {
return nil, err
}
var rsp AccountsResponse
if errR := checkAPIResponse(bts, &rsp); errR != nil {
return nil, errR
}
return &rsp, nil
}
// Get retrieves account by id
func (h AccountsHandler) Get(ctx context.Context, id string) (*AccountResponse, error) {
if id == "" {
return nil, errors.New("cannot get account by empty account id")
}
path := buildPath("account", id)
bts, err := h.client.doGetRequest(ctx, path, nil)
if err != nil {
return nil, err
}
var rsp AccountResponse
if errR := checkAPIResponse(bts, &rsp); errR != nil {
return nil, errR
}
return &rsp, nil
}
// Delete deletes an existing account by id
func (h AccountsHandler) Delete(ctx context.Context, id string) error {
if id == "" {
return errors.New("cannot delete account by empty account id")
}
path := buildPath("account", id)
bts, err := h.client.doDeleteRequest(ctx, path, nil)
if err != nil {
return err
}
return checkAPIResponse(bts, nil)
}
// Update updates an existing account
func (h AccountsHandler) Update(ctx context.Context, id string, account Account) (*AccountResponse, error) {
if id == "" {
return nil, errors.New("cannot update account by empty account id")
}
path := buildPath("account", id)
bts, err := h.client.doPutRequest(ctx, path, account)
if err != nil {
return nil, err
}
var rsp AccountResponse
if errR := checkAPIResponse(bts, &rsp); errR != nil {
return nil, errR
}
return &rsp, nil
}
// Create creates new account
func (h AccountsHandler) Create(ctx context.Context, account Account) (*AccountResponse, error) {
path := buildPath("account")
bts, err := h.client.doPostRequest(ctx, path, account)
if err != nil {
return nil, err
}
var rsp AccountResponse
if errR := checkAPIResponse(bts, &rsp); errR != nil {
return nil, errR
}
return &rsp, nil
}