From 470274204e6714c8062a49fa9e96450a67452133 Mon Sep 17 00:00:00 2001 From: Philidor Green Date: Sat, 28 Mar 2020 16:56:11 +0300 Subject: api: support get releases endpoint (#6026) --- internal/route/api/v1/api.go | 1 + internal/route/api/v1/repo/repo.go | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) (limited to 'internal/route') diff --git a/internal/route/api/v1/api.go b/internal/route/api/v1/api.go index b56d640b..01f23d42 100644 --- a/internal/route/api/v1/api.go +++ b/internal/route/api/v1/api.go @@ -245,6 +245,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Get("/search", repo.Search) m.Get("/:username/:reponame", repoAssignment(), repo.Get) + m.Get("/:username/:reponame/releases", repoAssignment(), repo.Releases) }) m.Group("/repos", func() { diff --git a/internal/route/api/v1/repo/repo.go b/internal/route/api/v1/repo/repo.go index e198dffc..71b94d75 100644 --- a/internal/route/api/v1/repo/repo.go +++ b/internal/route/api/v1/repo/repo.go @@ -403,3 +403,26 @@ func MirrorSync(c *context.APIContext) { go db.MirrorQueue.Add(repo.ID) c.Status(http.StatusAccepted) } + +func Releases(c *context.APIContext) { + _, repo := parseOwnerAndRepo(c) + releases, err := db.GetReleasesByRepoID(repo.ID) + if err != nil { + c.Error(err, "get releases by repository ID") + return + } + apiReleases := make([]*api.Release, 0, len(releases)) + for _, r := range releases { + publisher, err := db.GetUserByID(r.PublisherID) + if err != nil { + c.Error(err, "get release publisher") + return + } + r.Publisher = publisher + } + for _, r := range releases { + apiReleases = append(apiReleases, r.APIFormat()) + } + + c.JSONSuccess(&apiReleases) +} -- cgit v1.2.3