diff options
author | Anton Antonov <anton.synd.antonov@gmail.com> | 2017-11-14 05:27:30 +0200 |
---|---|---|
committer | 无闻 <u@gogs.io> | 2017-11-13 22:27:30 -0500 |
commit | 77c77fbd42a2cafcb31ecf042a94141a7ca31c98 (patch) | |
tree | 39b1d951de585516de217604b10ace525ec1f43e /routes | |
parent | 9b4054f1fc3a92c7c582770a2c9997213434a792 (diff) |
api: add endpoint /api/v1/user/orgs (#4835)
* Add API endpoint /api/v1/user/orgs
The difference between this endpoint and
/api/v1/admin/users/<username>/orgs,
is that here you're creating a repo with the `user`
that corresponds to the API token you're using.
* Extract duplicate API org creation
Diffstat (limited to 'routes')
-rw-r--r-- | routes/api/v1/admin/org.go | 30 | ||||
-rw-r--r-- | routes/api/v1/api.go | 3 | ||||
-rw-r--r-- | routes/api/v1/org/org.go | 33 |
3 files changed, 37 insertions, 29 deletions
diff --git a/routes/api/v1/admin/org.go b/routes/api/v1/admin/org.go index 0f84ed2e..89251d2e 100644 --- a/routes/api/v1/admin/org.go +++ b/routes/api/v1/admin/org.go @@ -7,38 +7,12 @@ package admin import ( api "github.com/gogits/go-gogs-client" - "github.com/gogits/gogs/models" "github.com/gogits/gogs/pkg/context" - "github.com/gogits/gogs/routes/api/v1/convert" "github.com/gogits/gogs/routes/api/v1/user" + "github.com/gogits/gogs/routes/api/v1/org" ) // https://github.com/gogits/go-gogs-client/wiki/Administration-Organizations#create-a-new-organization func CreateOrg(c *context.APIContext, form api.CreateOrgOption) { - u := user.GetUserByParams(c) - if c.Written() { - return - } - - org := &models.User{ - Name: form.UserName, - FullName: form.FullName, - Description: form.Description, - Website: form.Website, - Location: form.Location, - IsActive: true, - Type: models.USER_TYPE_ORGANIZATION, - } - if err := models.CreateOrganization(org, u); err != nil { - if models.IsErrUserAlreadyExist(err) || - models.IsErrNameReserved(err) || - models.IsErrNamePatternNotAllowed(err) { - c.Error(422, "", err) - } else { - c.Error(500, "CreateOrganization", err) - } - return - } - - c.JSON(201, convert.ToOrganization(org)) + org.CreateOrgForUser(c, form, user.GetUserByParams(c)) } diff --git a/routes/api/v1/api.go b/routes/api/v1/api.go index 510c54cf..da811c25 100644 --- a/routes/api/v1/api.go +++ b/routes/api/v1/api.go @@ -316,7 +316,8 @@ func RegisterRoutes(m *macaron.Macaron) { m.Get("/issues", reqToken(), repo.ListUserIssues) // Organizations - m.Get("/user/orgs", reqToken(), org.ListMyOrgs) + m.Combo("/user/orgs", reqToken()).Get(org.ListMyOrgs).Post(bind(api.CreateOrgOption{}), org.CreateMyOrg) + m.Get("/users/:username/orgs", org.ListUserOrgs) m.Group("/orgs/:orgname", func() { m.Combo("").Get(org.Get).Patch(bind(api.EditOrgOption{}), org.Edit) diff --git a/routes/api/v1/org/org.go b/routes/api/v1/org/org.go index 2f8832ca..25a0e5b6 100644 --- a/routes/api/v1/org/org.go +++ b/routes/api/v1/org/org.go @@ -13,6 +13,34 @@ import ( "github.com/gogits/gogs/routes/api/v1/user" ) +func CreateOrgForUser(c *context.APIContext, apiForm api.CreateOrgOption, user *models.User) { + if c.Written() { + return + } + + org := &models.User{ + Name: apiForm.UserName, + FullName: apiForm.FullName, + Description: apiForm.Description, + Website: apiForm.Website, + Location: apiForm.Location, + IsActive: true, + Type: models.USER_TYPE_ORGANIZATION, + } + if err := models.CreateOrganization(org, user); err != nil { + if models.IsErrUserAlreadyExist(err) || + models.IsErrNameReserved(err) || + models.IsErrNamePatternNotAllowed(err) { + c.Error(422, "", err) + } else { + c.Error(500, "CreateOrganization", err) + } + return + } + + c.JSON(201, convert.ToOrganization(org)) +} + func listUserOrgs(c *context.APIContext, u *models.User, all bool) { if err := u.GetOrganizations(all); err != nil { c.Error(500, "GetOrganizations", err) @@ -31,6 +59,11 @@ func ListMyOrgs(c *context.APIContext) { listUserOrgs(c, c.User, true) } +// https://github.com/gogits/go-gogs-client/wiki/Organizations#create-your-organization +func CreateMyOrg(c *context.APIContext, apiForm api.CreateOrgOption) { + CreateOrgForUser(c, apiForm, c.User) +} + // https://github.com/gogits/go-gogs-client/wiki/Organizations#list-user-organizations func ListUserOrgs(c *context.APIContext) { u := user.GetUserByParams(c) |