mirror of
https://github.com/gogs/gogs.git
synced 2026-07-05 10:18:38 +02:00
api: support get releases endpoint (#6026)
This commit is contained in:
@@ -267,6 +267,12 @@ func GetPublishedReleasesByRepoID(repoID int64, matches ...string) ([]*Release,
|
||||
return releases, sess.Find(&releases, new(Release))
|
||||
}
|
||||
|
||||
// GetReleasesByRepoID returns a list of all releases (including drafts) of given repository.
|
||||
func GetReleasesByRepoID(repoID int64) ([]*Release, error) {
|
||||
releases := make([]*Release, 0)
|
||||
return releases, x.Where("repo_id = ?", repoID).Find(&releases)
|
||||
}
|
||||
|
||||
// GetDraftReleasesByRepoID returns all draft releases of repository.
|
||||
func GetDraftReleasesByRepoID(repoID int64) ([]*Release, error) {
|
||||
releases := make([]*Release, 0)
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user