Skip to content
This repository was archived by the owner on Mar 17, 2021. It is now read-only.

Commit 3eff318

Browse files
committed
impl team API
1 parent 8a8e053 commit 3eff318

File tree

1 file changed

+241
-0
lines changed

1 file changed

+241
-0
lines changed

team.go

Lines changed: 241 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,241 @@
1+
package gapi
2+
3+
import (
4+
"bytes"
5+
"encoding/json"
6+
"fmt"
7+
"io/ioutil"
8+
)
9+
10+
// Team consists of a get response
11+
// It's used in Add and Update API
12+
type Team struct {
13+
Id int64 `json:"id,omitempty"`
14+
OrgId int64 `json:"orgId,omitempty"`
15+
Name string `json:"name"`
16+
Email string `json:"email,omitempty"`
17+
AvatarUrl string `json:"avatarUrl,omitempty"`
18+
MemberCount int64 `json:"memberCount,omitempty"`
19+
Permission int64 `json:"permission,omitempty"`
20+
}
21+
22+
// TeamMember
23+
type TeamMember struct {
24+
OrgId int64 `json:"orgId,omitempty"`
25+
TeamId int64 `json:"teamId,omitempty"`
26+
UserId int64 `json:"userId,omitempty"`
27+
Email string `json:"email,omitempty"`
28+
Login string `json:"login,omitempty"`
29+
AvatarUrl string `json:"avatarUrl,omitempty"`
30+
Permission int64 `json:"permission,omitempty"`
31+
}
32+
33+
type Preferences struct {
34+
Theme string `json:"theme"`
35+
HomeDashboardId int64 `json:"homeDashboardId"`
36+
Timezone string `json:"timezone"`
37+
}
38+
39+
func (c *Client) Team(id int64) (*Team, error) {
40+
var team Team
41+
42+
req, err := c.newRequest("GET", fmt.Sprintf("/api/teams/%d", id), nil, nil)
43+
if err != nil {
44+
return nil, err
45+
}
46+
resp, err := c.Do(req)
47+
if err != nil {
48+
return nil, err
49+
}
50+
if resp.StatusCode != 200 {
51+
return nil, fmt.Errorf(resp.Status)
52+
}
53+
data, err := ioutil.ReadAll(resp.Body)
54+
if err != nil {
55+
return nil, err
56+
}
57+
if err := json.Unmarshal(data, &team); err != nil {
58+
return nil, err
59+
}
60+
return &team, nil
61+
}
62+
63+
// AddTeam makes a new team
64+
// email arg is an optional value.
65+
// If you don't want to set email, please set "" (empty string).
66+
func (c *Client) AddTeam(name string, email string) error {
67+
path := fmt.Sprintf("/api/teams")
68+
team := Team{
69+
Name: name,
70+
Email: email,
71+
}
72+
data, err := json.Marshal(team)
73+
if err != nil {
74+
return err
75+
}
76+
req, err := c.newRequest("POST", path, nil, bytes.NewBuffer(data))
77+
if err != nil {
78+
return err
79+
}
80+
resp, err := c.Do(req)
81+
if err != nil {
82+
return err
83+
}
84+
if resp.StatusCode != 200 {
85+
return fmt.Errorf(resp.Status)
86+
}
87+
return nil
88+
}
89+
90+
func (c *Client) UpdateTeam(id int64, name string, email string) error {
91+
path := fmt.Sprintf("/api/teams/%d", id)
92+
team := Team{
93+
Name: name,
94+
}
95+
// add param if email exists
96+
if email != "" {
97+
team.Email = email
98+
}
99+
data, err := json.Marshal(team)
100+
if err != nil {
101+
return err
102+
}
103+
req, err := c.newRequest("PUT", path, nil, bytes.NewBuffer(data))
104+
if err != nil {
105+
return err
106+
}
107+
resp, err := c.Do(req)
108+
if err != nil {
109+
return err
110+
}
111+
if resp.StatusCode != 200 {
112+
return fmt.Errorf(resp.Status)
113+
}
114+
return nil
115+
}
116+
117+
func (c *Client) DeleteTeam(id int64) error {
118+
req, err := c.newRequest("DELETE", fmt.Sprintf("/api/teams/%d", id), nil, nil)
119+
if err != nil {
120+
return err
121+
}
122+
resp, err := c.Do(req)
123+
if err != nil {
124+
return err
125+
}
126+
if resp.StatusCode != 200 {
127+
return fmt.Errorf(resp.Status)
128+
}
129+
return nil
130+
}
131+
132+
func (c *Client) TeamMembers(id int64) ([]TeamMember, error) {
133+
members := make([]TeamMember, 0)
134+
135+
req, err := c.newRequest("GET", fmt.Sprintf("/api/teams/%d/members", id), nil, nil)
136+
if err != nil {
137+
return members, err
138+
}
139+
resp, err := c.Do(req)
140+
if err != nil {
141+
return members, err
142+
}
143+
if resp.StatusCode != 200 {
144+
return members, fmt.Errorf(resp.Status)
145+
}
146+
data, err := ioutil.ReadAll(resp.Body)
147+
if err != nil {
148+
return members, err
149+
}
150+
if err := json.Unmarshal(data, &members); err != nil {
151+
return members, err
152+
}
153+
return members, nil
154+
}
155+
156+
func (c *Client) AddTeamMember(id int64, userId int64) error {
157+
path := fmt.Sprintf("/api/teams/%d/members", id)
158+
member := TeamMember{UserId: userId}
159+
data, err := json.Marshal(member)
160+
if err != nil {
161+
return err
162+
}
163+
req, err := c.newRequest("POST", path, nil, bytes.NewBuffer(data))
164+
if err != nil {
165+
return err
166+
}
167+
resp, err := c.Do(req)
168+
if err != nil {
169+
return err
170+
}
171+
if resp.StatusCode != 200 {
172+
return fmt.Errorf(resp.Status)
173+
}
174+
return nil
175+
}
176+
177+
func (c *Client) RemoveMemberFromTeam(id int64, userId int64) error {
178+
path := fmt.Sprintf("/api/teams/%d/members/%d", id, userId)
179+
180+
req, err := c.newRequest("DELETE", path, nil, nil)
181+
if err != nil {
182+
return err
183+
}
184+
resp, err := c.Do(req)
185+
if err != nil {
186+
return err
187+
}
188+
if resp.StatusCode != 200 {
189+
return fmt.Errorf(resp.Status)
190+
}
191+
return nil
192+
}
193+
194+
func (c *Client) TeamPreferences(id int64) (*Preferences, error) {
195+
var preferences Preferences
196+
197+
req, err := c.newRequest("GET", fmt.Sprintf("/api/teams/%d/preferences", id), nil, nil)
198+
if err != nil {
199+
return nil, err
200+
}
201+
resp, err := c.Do(req)
202+
if err != nil {
203+
return nil, err
204+
}
205+
if resp.StatusCode != 200 {
206+
return nil, fmt.Errorf(resp.Status)
207+
}
208+
data, err := ioutil.ReadAll(resp.Body)
209+
if err != nil {
210+
return nil, err
211+
}
212+
if err := json.Unmarshal(data, &preferences); err != nil {
213+
return nil, err
214+
}
215+
return &preferences, nil
216+
}
217+
218+
func (c *Client) UpdateTeamPreferences(id int64, theme string, homeDashboardId int64, timezone string) error {
219+
path := fmt.Sprintf("/api/teams/%d", id)
220+
preferences := Preferences{
221+
Theme: theme,
222+
HomeDashboardId: homeDashboardId,
223+
Timezone: timezone,
224+
}
225+
data, err := json.Marshal(preferences)
226+
if err != nil {
227+
return err
228+
}
229+
req, err := c.newRequest("PUT", path, nil, bytes.NewBuffer(data))
230+
if err != nil {
231+
return err
232+
}
233+
resp, err := c.Do(req)
234+
if err != nil {
235+
return err
236+
}
237+
if resp.StatusCode != 200 {
238+
return fmt.Errorf(resp.Status)
239+
}
240+
return nil
241+
}

0 commit comments

Comments
 (0)