From e8ea0695b01c1439586a4e62fcfdfb0835f5b835 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Thu, 9 Jan 2020 17:40:01 +0100 Subject: [PATCH] [API] creat org repo call same as github (#9186) * deprecate /api/v1/org/{org}/repos in favour of /api/v1/orgs/{org}/repos + cleanup api repository routes a bit * remove redundant code * use upstream function for api cal * make generate-swagger Co-authored-by: Lunny Xiao Co-authored-by: Antoine GIRARD Co-authored-by: zeripath Co-authored-by: Lauris BH --- routers/api/v1/api.go | 13 +++++----- routers/api/v1/repo/repo.go | 38 ++++++++++++++++++++++++++--- templates/swagger/v1_json.tmpl | 44 +++++++++++++++++++++++++++++++++- 3 files changed, 84 insertions(+), 11 deletions(-) diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index ccce00e2b..fd7f7c05c 100644 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -604,17 +604,15 @@ func RegisterRoutes(m *macaron.Macaron) { }, reqToken()) // Repositories - m.Post("/org/:org/repos", reqToken(), bind(api.CreateRepoOption{}), repo.CreateOrgRepo) + m.Post("/org/:org/repos", reqToken(), bind(api.CreateRepoOption{}), repo.CreateOrgRepoDeprecated) + + m.Combo("/repositories/:id", reqToken()).Get(repo.GetByID) m.Group("/repos", func() { m.Get("/search", repo.Search) - }) - m.Get("/repos/issues/search", repo.SearchIssues) + m.Get("/issues/search", repo.SearchIssues) - m.Combo("/repositories/:id", reqToken()).Get(repo.GetByID) - - m.Group("/repos", func() { m.Post("/migrate", reqToken(), bind(auth.MigrateRepoForm{}), repo.Migrate) m.Group("/:username/:reponame", func() { @@ -824,10 +822,11 @@ func RegisterRoutes(m *macaron.Macaron) { m.Get("/users/:username/orgs", org.ListUserOrgs) m.Post("/orgs", reqToken(), bind(api.CreateOrgOption{}), org.Create) m.Group("/orgs/:orgname", func() { - m.Get("/repos", user.ListOrgRepos) m.Combo("").Get(org.Get). Patch(reqToken(), reqOrgOwnership(), bind(api.EditOrgOption{}), org.Edit). Delete(reqToken(), reqOrgOwnership(), org.Delete) + m.Combo("/repos").Get(user.ListOrgRepos). + Post(reqToken(), bind(api.CreateRepoOption{}), repo.CreateOrgRepo) m.Group("/members", func() { m.Get("", org.ListMembers) m.Combo("/:username").Get(org.IsMember). diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go index 8f34d8cca..ae834bead 100644 --- a/routers/api/v1/repo/repo.go +++ b/routers/api/v1/repo/repo.go @@ -283,11 +283,12 @@ func Create(ctx *context.APIContext, opt api.CreateRepoOption) { CreateUserRepo(ctx, ctx.User, opt) } -// CreateOrgRepo create one repository of the organization -func CreateOrgRepo(ctx *context.APIContext, opt api.CreateRepoOption) { - // swagger:operation POST /org/{org}/repos organization createOrgRepo +// CreateOrgRepoDeprecated create one repository of the organization +func CreateOrgRepoDeprecated(ctx *context.APIContext, opt api.CreateRepoOption) { + // swagger:operation POST /org/{org}/repos organization createOrgRepoDeprecated // --- // summary: Create a repository in an organization + // deprecated: true // consumes: // - application/json // produces: @@ -310,6 +311,37 @@ func CreateOrgRepo(ctx *context.APIContext, opt api.CreateRepoOption) { // "403": // "$ref": "#/responses/forbidden" + CreateOrgRepo(ctx, opt) +} + +// CreateOrgRepo create one repository of the organization +func CreateOrgRepo(ctx *context.APIContext, opt api.CreateRepoOption) { + // swagger:operation POST /orgs/{org}/repos organization createOrgRepo + // --- + // summary: Create a repository in an organization + // deprecated: true + // consumes: + // - application/json + // produces: + // - application/json + // parameters: + // - name: org + // in: path + // description: name of organization + // type: string + // required: true + // - name: body + // in: body + // schema: + // "$ref": "#/definitions/CreateRepoOption" + // responses: + // "201": + // "$ref": "#/responses/Repository" + // "404": + // "$ref": "#/responses/notFound" + // "403": + // "$ref": "#/responses/forbidden" + org, err := models.GetOrgByName(ctx.Params(":org")) if err != nil { if models.IsErrOrgNotExist(err) { diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl index 79f760b7a..6bad46219 100644 --- a/templates/swagger/v1_json.tmpl +++ b/templates/swagger/v1_json.tmpl @@ -574,7 +574,8 @@ "organization" ], "summary": "Create a repository in an organization", - "operationId": "createOrgRepo", + "operationId": "createOrgRepoDeprecated", + "deprecated": true, "parameters": [ { "type": "string", @@ -1140,6 +1141,47 @@ "$ref": "#/responses/RepositoryList" } } + }, + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "organization" + ], + "summary": "Create a repository in an organization", + "operationId": "createOrgRepo", + "deprecated": true, + "parameters": [ + { + "type": "string", + "description": "name of organization", + "name": "org", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/CreateRepoOption" + } + } + ], + "responses": { + "201": { + "$ref": "#/responses/Repository" + }, + "403": { + "$ref": "#/responses/forbidden" + }, + "404": { + "$ref": "#/responses/notFound" + } + } } }, "/orgs/{org}/teams": {