-
Notifications
You must be signed in to change notification settings - Fork 1
/
company.go
120 lines (108 loc) · 2.96 KB
/
company.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
package iland
import (
"encoding/json"
"fmt"
)
type Company struct {
ID string `json:"company_id"`
Name string `json:"name"`
HasIAAS bool `json:"has_iaas"`
HasVCC bool `json:"has_vcc"`
Domain Domain `json:"domain"`
}
type companyService struct {
client *client
}
func (s *companyService) Get(companyID string) (Company, error) {
company := Company{}
err := s.client.getObject(fmt.Sprintf("/v1/companies/%s", companyID), &company)
if err != nil {
return Company{}, err
}
return company, nil
}
func (s *companyService) GetUsers(companyID string) ([]User, error) {
schema := struct {
Users []User `json:"data"`
}{}
err := s.client.getObject(fmt.Sprintf("/v1/companies/%s/users", companyID), &schema)
if err != nil {
return []User{}, err
}
return schema.Users, nil
}
type CreateUserParams struct {
Username string `json:"username"`
FullName string `json:"full_name"`
Email string `json:"email"`
DomainID string `json:"domain"`
Password string `json:"password"`
}
func (s *companyService) CreateUser(companyID string, params CreateUserParams) (User, error) {
data, err := json.Marshal(¶ms)
if err != nil {
return User{}, err
}
resp, err := s.client.Post(fmt.Sprintf("/v1/companies/%s/users", companyID), data)
if err != nil {
return User{}, err
}
user := User{}
err = unmarshalBody(resp, &user)
if err != nil {
return User{}, err
}
return user, nil
}
func (s *companyService) GetRoles(companyID string) ([]Role, error) {
schema := struct {
Roles []Role `json:"data"`
}{}
err := s.client.getObject(fmt.Sprintf("/v1/companies/%s/roles", companyID), &schema)
if err != nil {
return []Role{}, err
}
return schema.Roles, nil
}
func (s *companyService) GetRole(companyID, roleID string) (Role, error) {
role := Role{}
err := s.client.getObject(fmt.Sprintf("/v1/companies/%s/roles/%s", companyID, roleID), &role)
if err != nil {
return Role{}, err
}
return role, nil
}
func (s *companyService) GetOrgs(companyID string) ([]Org, error) {
orgs := []Org{}
for _, locationID := range LocationIDs {
schema := struct {
Orgs []Org `json:"data"`
}{}
err := s.client.getObject(fmt.Sprintf("/v1/companies/%s/location/%s/orgs", companyID, locationID), &schema)
if err != nil {
return []Org{}, err
}
orgs = append(orgs, schema.Orgs...)
}
return orgs, nil
}
func (s *companyService) GetLocationOrgs(companyID, locationID string) ([]Org, error) {
schema := struct {
Orgs []Org `json:"data"`
}{}
err := s.client.getObject(fmt.Sprintf("/v1/companies/%s/location/%s/orgs", companyID, locationID), &schema)
if err != nil {
return []Org{}, err
}
return schema.Orgs, nil
}
func (s *companyService) GetVCCBackupTenants(companyID string) ([]VCCBackupTenant, error) {
schema := struct {
VCCBackupTenants []VCCBackupTenant `json:"data"`
}{}
err := s.client.getObject(fmt.Sprintf("/v1/companies/%s/vcc-backup-tenants", companyID), &schema)
if err != nil {
return []VCCBackupTenant{}, err
}
return schema.VCCBackupTenants, nil
}