diff options
author | Philidor Green <fishbullet@users.noreply.github.com> | 2020-03-28 16:56:11 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-28 21:56:11 +0800 |
commit | 470274204e6714c8062a49fa9e96450a67452133 (patch) | |
tree | d71862b5c333afc74dee419c4e61452e6a01c6ec /internal/route/api/v1/repo | |
parent | af0cfe112b4fcab674494dfb1a716a4bede2d7ca (diff) |
api: support get releases endpoint (#6026)
Diffstat (limited to 'internal/route/api/v1/repo')
-rw-r--r-- | internal/route/api/v1/repo/repo.go | 23 |
1 files changed, 23 insertions, 0 deletions
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) +} |