aboutsummaryrefslogtreecommitdiff
path: root/internal/route/api/v1/repo
diff options
context:
space:
mode:
authorPhilidor Green <fishbullet@users.noreply.github.com>2020-03-28 16:56:11 +0300
committerGitHub <noreply@github.com>2020-03-28 21:56:11 +0800
commit470274204e6714c8062a49fa9e96450a67452133 (patch)
treed71862b5c333afc74dee419c4e61452e6a01c6ec /internal/route/api/v1/repo
parentaf0cfe112b4fcab674494dfb1a716a4bede2d7ca (diff)
api: support get releases endpoint (#6026)
Diffstat (limited to 'internal/route/api/v1/repo')
-rw-r--r--internal/route/api/v1/repo/repo.go23
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)
+}