Skip to content

Commit 4b4ae46

Browse files
committedDec 24, 2016
API endpoints for organization teams
1 parent fa3abc2 commit 4b4ae46

File tree

3 files changed

+70
-0
lines changed

3 files changed

+70
-0
lines changed
 

‎routers/api/v1/admin/org_team.go

+25
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,31 @@ func CreateTeam(ctx *context.APIContext, form api.CreateTeamOption) {
3333
ctx.JSON(201, convert.ToTeam(team))
3434
}
3535

36+
// EditTeam api for edit a team
37+
func EditTeam(ctx *context.APIContext, form api.EditTeamOption) {
38+
team := &models.Team{
39+
ID: ctx.Org.Team.ID,
40+
OrgID: ctx.Org.Team.OrgID,
41+
Name: form.Name,
42+
Description: form.Description,
43+
Authorize: models.ParseAccessMode(form.Permission),
44+
}
45+
if err := models.UpdateTeam(team, true); err != nil {
46+
ctx.Error(500, "EditTeam", err)
47+
return
48+
}
49+
ctx.JSON(200, convert.ToTeam(team))
50+
}
51+
52+
// DeleteTeam api for delete a team
53+
func DeleteTeam(ctx *context.APIContext) {
54+
if err := models.DeleteTeam(ctx.Org.Team); err != nil {
55+
ctx.Error(500, "DeleteTeam", err)
56+
return
57+
}
58+
ctx.Status(204)
59+
}
60+
3661
// AddTeamMember api for add a member to a team
3762
func AddTeamMember(ctx *context.APIContext) {
3863
u := user.GetUserByParams(ctx)

‎routers/api/v1/api.go

+7
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,11 @@ func RegisterRoutes(m *macaron.Macaron) {
344344
m.Combo("").Get(org.Get).Patch(bind(api.EditOrgOption{}), org.Edit)
345345
m.Combo("/teams").Get(org.ListTeams)
346346
}, orgAssignment(true))
347+
m.Group("/teams/:teamid", func() {
348+
m.Get("", org.GetTeam)
349+
m.Get("/members", org.GetTeamMembers)
350+
m.Get("/repos", org.GetTeamRepos)
351+
}, orgAssignment(false, true))
347352

348353
m.Any("/*", func(ctx *context.Context) {
349354
ctx.Error(404)
@@ -369,6 +374,8 @@ func RegisterRoutes(m *macaron.Macaron) {
369374
})
370375
m.Group("/teams", func() {
371376
m.Group("/:teamid", func() {
377+
m.Combo("").Patch(bind(api.EditTeamOption{}), admin.EditTeam).
378+
Delete(admin.DeleteTeam)
372379
m.Combo("/members/:username").Put(admin.AddTeamMember).Delete(admin.RemoveTeamMember)
373380
m.Combo("/repos/:reponame").Put(admin.AddTeamRepository).Delete(admin.RemoveTeamRepository)
374381
}, orgAssignment(false, true))

‎routers/api/v1/org/team.go

+38
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package org
77
import (
88
api "code.gitea.io/sdk/gitea"
99

10+
"code.gitea.io/gitea/models"
1011
"code.gitea.io/gitea/modules/context"
1112
"code.gitea.io/gitea/routers/api/v1/convert"
1213
)
@@ -25,3 +26,40 @@ func ListTeams(ctx *context.APIContext) {
2526
}
2627
ctx.JSON(200, apiTeams)
2728
}
29+
30+
// GetTeam api for get a team
31+
func GetTeam(ctx *context.APIContext) {
32+
ctx.JSON(200, convert.ToTeam(ctx.Org.Team))
33+
}
34+
35+
// GetTeamMembers api for get a team's members
36+
func GetTeamMembers(ctx *context.APIContext) {
37+
team := ctx.Org.Team
38+
if err := team.GetMembers(); err != nil {
39+
ctx.Error(500, "GetTeamMembers", err)
40+
return
41+
}
42+
members := make([]*api.User, len(team.Members))
43+
for i, member := range team.Members {
44+
members[i] = member.APIFormat()
45+
}
46+
ctx.JSON(200, members)
47+
}
48+
49+
// GetTeamRepos api for get a team's repos
50+
func GetTeamRepos(ctx *context.APIContext) {
51+
team := ctx.Org.Team
52+
if err := team.GetRepositories(); err != nil {
53+
ctx.Error(500, "GetTeamRepos", err)
54+
}
55+
repos := make([]*api.Repository, len(team.Repos))
56+
for i, repo := range team.Repos {
57+
access, err := models.AccessLevel(ctx.User, repo)
58+
if err != nil {
59+
ctx.Error(500, "GetTeamRepos", err)
60+
return
61+
}
62+
repos[i] = repo.APIFormat(access)
63+
}
64+
ctx.JSON(200, repos)
65+
}

0 commit comments

Comments
 (0)