5
5
package repo
6
6
7
7
import (
8
+ "fmt"
8
9
"net/http"
9
10
10
11
"code.gitea.io/gitea/models"
@@ -112,13 +113,15 @@ func ListReleases(ctx *context.APIContext) {
112
113
listOptions .PageSize = ctx .QueryInt ("per_page" )
113
114
}
114
115
115
- releases , err := models . GetReleasesByRepoID ( ctx . Repo . Repository . ID , models.FindReleasesOptions {
116
+ opts := models.FindReleasesOptions {
116
117
ListOptions : listOptions ,
117
118
IncludeDrafts : ctx .Repo .AccessMode >= models .AccessModeWrite ,
118
119
IncludeTags : false ,
119
120
IsDraft : ctx .QueryOptionalBool ("draft" ),
120
121
IsPreRelease : ctx .QueryOptionalBool ("pre-release" ),
121
- })
122
+ }
123
+
124
+ releases , err := models .GetReleasesByRepoID (ctx .Repo .Repository .ID , opts )
122
125
if err != nil {
123
126
ctx .Error (http .StatusInternalServerError , "GetReleasesByRepoID" , err )
124
127
return
@@ -131,6 +134,16 @@ func ListReleases(ctx *context.APIContext) {
131
134
}
132
135
rels [i ] = convert .ToRelease (release )
133
136
}
137
+
138
+ filteredCount , err := models .CountReleasesByRepoID (ctx .Repo .Repository .ID , opts )
139
+ if err != nil {
140
+ ctx .InternalServerError (err )
141
+ return
142
+ }
143
+
144
+ ctx .SetLinkHeader (int (filteredCount ), listOptions .PageSize )
145
+ ctx .Header ().Set ("X-Total-Count" , fmt .Sprint (filteredCount ))
146
+ ctx .Header ().Set ("Access-Control-Expose-Headers" , "X-Total-Count, Link" )
134
147
ctx .JSON (http .StatusOK , rels )
135
148
}
136
149
0 commit comments