Skip to content
This repository was archived by the owner on Jun 8, 2019. It is now read-only.

Commit ac88dcd

Browse files
ngourdonlafriks
authored andcommitted
Add API for teams (#176)
1 parent 78721a4 commit ac88dcd

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed

gitea/org_team.go

+102
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
// Copyright 2019 The Gitea Authors. All rights reserved.
2+
// Use of this source code is governed by a MIT-style
3+
// license that can be found in the LICENSE file.
4+
5+
package gitea
6+
7+
import (
8+
"bytes"
9+
"encoding/json"
10+
"fmt"
11+
12+
"code.gitea.io/gitea/modules/structs"
13+
)
14+
15+
// Team is equal to structs.Team
16+
type Team = structs.Team
17+
18+
// ListOrgTeams lists all teams of an organization
19+
func (c *Client) ListOrgTeams(org string) ([]*Team, error) {
20+
teams := make([]*Team, 0, 10)
21+
return teams, c.getParsedResponse("GET", fmt.Sprintf("/orgs/%s/teams", org), nil, nil, &teams)
22+
}
23+
24+
// ListMyTeams lists all the teams of the current user
25+
func (c *Client) ListMyTeams() ([]*Team, error) {
26+
teams := make([]*Team, 0, 10)
27+
return teams, c.getParsedResponse("GET", "/user/teams", nil, nil, &teams)
28+
}
29+
30+
// GetTeam gets a team by ID
31+
func (c *Client) GetTeam(id int64) (*Team, error) {
32+
t := new(Team)
33+
return t, c.getParsedResponse("GET", fmt.Sprintf("/teams/%d", id), nil, nil, t)
34+
}
35+
36+
// CreateTeam creates a team for an organization
37+
func (c *Client) CreateTeam(org string, opt structs.CreateTeamOption) (*Team, error) {
38+
body, err := json.Marshal(&opt)
39+
if err != nil {
40+
return nil, err
41+
}
42+
t := new(Team)
43+
return t, c.getParsedResponse("POST", fmt.Sprintf("/orgs/%s/teams", org), jsonHeader, bytes.NewReader(body), t)
44+
}
45+
46+
// EditTeam edits a team of an organization
47+
func (c *Client) EditTeam(org string, id int64, opt structs.EditTeamOption) error {
48+
body, err := json.Marshal(&opt)
49+
if err != nil {
50+
return err
51+
}
52+
_, err = c.getResponse("PATCH", fmt.Sprintf("/orgs/%s/teams/%d", org, id), jsonHeader, bytes.NewReader(body))
53+
return err
54+
}
55+
56+
// DeleteTeam deletes a team of an organization
57+
func (c *Client) DeleteTeam(org string, id int64) error {
58+
_, err := c.getResponse("DELETE", fmt.Sprintf("/orgs/%s/teams/%d", org, id), nil, nil)
59+
return err
60+
}
61+
62+
// ListTeamMembers lists all members of a team
63+
func (c *Client) ListTeamMembers(id int64) ([]*User, error) {
64+
members := make([]*User, 0, 10)
65+
return members, c.getParsedResponse("GET", fmt.Sprintf("/teams/%d/members", id), nil, nil, &members)
66+
}
67+
68+
// GetTeamMember gets a member of a team
69+
func (c *Client) GetTeamMember(id int64, user string) (*User, error) {
70+
m := new(User)
71+
return m, c.getParsedResponse("GET", fmt.Sprintf("/teams/%d/members/%s", id, user), nil, nil, m)
72+
}
73+
74+
// AddTeamMember adds a member to a team
75+
func (c *Client) AddTeamMember(id int64, user string) error {
76+
_, err := c.getResponse("PUT", fmt.Sprintf("/teams/%d/members/%s", id, user), nil, nil)
77+
return err
78+
}
79+
80+
// RemoveTeamMember removes a member from a team
81+
func (c *Client) RemoveTeamMember(id int64, user string) error {
82+
_, err := c.getResponse("DELETE", fmt.Sprintf("/teams/%d/members/%s", id, user), nil, nil)
83+
return err
84+
}
85+
86+
// ListTeamRepositories lists all repositories of a team
87+
func (c *Client) ListTeamRepositories(id int64) ([]*Repository, error) {
88+
repos := make([]*Repository, 0, 10)
89+
return repos, c.getParsedResponse("GET", fmt.Sprintf("/teams/%d/repos", id), nil, nil, &repos)
90+
}
91+
92+
// AddTeamRepository adds a repository to a team
93+
func (c *Client) AddTeamRepository(id int64, org, repo string) error {
94+
_, err := c.getResponse("PUT", fmt.Sprintf("/teams/%d/repos/%s/%s", id, org, repo), nil, nil)
95+
return err
96+
}
97+
98+
// RemoveTeamRepository removes a repository from a team
99+
func (c *Client) RemoveTeamRepository(id int64, org, repo string) error {
100+
_, err := c.getResponse("DELETE", fmt.Sprintf("/teams/%d/repos/%s/%s", id, org, repo), nil, nil)
101+
return err
102+
}

0 commit comments

Comments
 (0)