From 0ca48d9aa61ace63f0b752f854c701317b50637b Mon Sep 17 00:00:00 2001 From: awwalker Date: Sun, 7 May 2017 00:50:50 -0400 Subject: [PATCH 1/3] API: support '/orgs/:org/repos' fix syntax --- routers/api/v1/api.go | 3 +++ routers/api/v1/org/repo.go | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 routers/api/v1/org/repo.go diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index 96e3830a2148a..36d0b02c8ee50 100644 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -458,6 +458,9 @@ func RegisterRoutes(m *macaron.Macaron) { m.Combo("/:username").Get(org.IsMember). Delete(reqOrgOwnership(), org.DeleteMember) }) + m.Group("/repos", func() { + m.Get("", org.ListRepos) + }) m.Group("/public_members", func() { m.Get("", org.ListPublicMembers) m.Combo("/:username").Get(org.IsPublicMember). diff --git a/routers/api/v1/org/repo.go b/routers/api/v1/org/repo.go new file mode 100644 index 0000000000000..2017f8ab6ddba --- /dev/null +++ b/routers/api/v1/org/repo.go @@ -0,0 +1,36 @@ +package org + +import ( + "code.gitea.io/gitea/models" + "code.gitea.io/gitea/modules/context" + api "code.gitea.io/sdk/gitea" +) + +// ListRepos list all of an organization's repositories. +func ListRepos(ctx *context.APIContext) { + requester := ctx.User + org := ctx.Org.Organization + + // Find all repos a user has access to within an org. + reposEnv, err := org.AccessibleReposEnv(requester.ID) + if err != nil { + ctx.Error(500, "AccessibleReposEnv", err) + return + } + repos, err := reposEnv.Repos(1, org.NumRepos) + if err != nil { + ctx.Error(500, "Repos", err) + return + } + + apiRepos := make([]*api.Repository, len(repos)) + for i, repo := range repos { + accessLevel, err := models.AccessLevel(requester.ID, repo) + if err != nil { + ctx.Error(500, "AccessLevel", err) + return + } + apiRepos[i] = repo.APIFormat(accessLevel) + } + ctx.JSON(200, &apiRepos) +} From 36df1455840dfade3ebb80525c1555ee816ca49e Mon Sep 17 00:00:00 2001 From: awwalker Date: Sat, 20 May 2017 00:08:41 -0400 Subject: [PATCH 2/3] add ctx nil check --- routers/api/v1/org/repo.go | 41 +++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/routers/api/v1/org/repo.go b/routers/api/v1/org/repo.go index 2017f8ab6ddba..4299ac8b747bf 100644 --- a/routers/api/v1/org/repo.go +++ b/routers/api/v1/org/repo.go @@ -8,29 +8,30 @@ import ( // ListRepos list all of an organization's repositories. func ListRepos(ctx *context.APIContext) { - requester := ctx.User - org := ctx.Org.Organization - - // Find all repos a user has access to within an org. - reposEnv, err := org.AccessibleReposEnv(requester.ID) - if err != nil { - ctx.Error(500, "AccessibleReposEnv", err) - return - } - repos, err := reposEnv.Repos(1, org.NumRepos) - if err != nil { - ctx.Error(500, "Repos", err) - return - } - - apiRepos := make([]*api.Repository, len(repos)) - for i, repo := range repos { - accessLevel, err := models.AccessLevel(requester.ID, repo) + var apiRepos []*api.Repository + if ctx.User != nil { + // Find all repos a user has access to within an org. + org := ctx.Org.Organization + reposEnv, err := org.AccessibleReposEnv(ctx.User.ID) if err != nil { - ctx.Error(500, "AccessLevel", err) + ctx.Error(500, "AccessibleReposEnv", err) return } - apiRepos[i] = repo.APIFormat(accessLevel) + repos, err := reposEnv.Repos(1, org.NumRepos) + if err != nil { + ctx.Error(500, "Repos", err) + return + } + // Convert to API repos. + apiRepos = make([]*api.Repository, len(repos)) + for i, repo := range repos { + accessLevel, err := models.AccessLevel(ctx.User.ID, repo) + if err != nil { + ctx.Error(500, "AccessLevel", err) + return + } + apiRepos[i] = repo.APIFormat(accessLevel) + } } ctx.JSON(200, &apiRepos) } From fa7c25115fa6bd8c779524d64898690eef8a85ae Mon Sep 17 00:00:00 2001 From: awwalker Date: Thu, 25 May 2017 18:05:25 -0400 Subject: [PATCH 3/3] add swagger comment --- routers/api/v1/org/repo.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/routers/api/v1/org/repo.go b/routers/api/v1/org/repo.go index 4299ac8b747bf..704bf7e1aaba9 100644 --- a/routers/api/v1/org/repo.go +++ b/routers/api/v1/org/repo.go @@ -8,6 +8,15 @@ import ( // ListRepos list all of an organization's repositories. func ListRepos(ctx *context.APIContext) { + // swagger:route GET /orgs/{org}/repos orgListRepos + // + // Produces: + // - application/json + // + // Responses: + // 200: RepositoryList + // 500: error + var apiRepos []*api.Repository if ctx.User != nil { // Find all repos a user has access to within an org.