@@ -111,11 +111,16 @@ def get(self, forge):
111
111
@ns .param ("forge" , "Git Forge" )
112
112
@ns .param ("namespace" , "Namespace" )
113
113
class ProjectsNamespace (Resource ):
114
+ @ns .expect (pagination_arguments )
114
115
@ns .response (HTTPStatus .OK .value , "Projects details follow" )
115
116
def get (self , forge , namespace ):
116
117
"""List of projects of given forge and namespace"""
117
118
result = []
118
- for project in GitProjectModel .get_by_forge_namespace (forge , namespace ):
119
+ first , last = indices ()
120
+
121
+ for project in GitProjectModel .get_by_forge_namespace (
122
+ first , last , forge , namespace
123
+ ):
119
124
project_info = {
120
125
"namespace" : project .namespace ,
121
126
"repo_name" : project .repo_name ,
@@ -126,7 +131,13 @@ def get(self, forge, namespace):
126
131
"issues_handled" : len (project .issues ),
127
132
}
128
133
result .append (project_info )
129
- return response_maker (result )
134
+
135
+ resp = response_maker (
136
+ result ,
137
+ status = HTTPStatus .PARTIAL_CONTENT if result else HTTPStatus .OK ,
138
+ )
139
+ resp .headers ["Content-Range" ] = f"git-projects { first + 1 } -{ last } /*"
140
+ return resp
130
141
131
142
132
143
@ns .route ("/<forge>/<namespace>/<repo_name>/prs" )
@@ -207,55 +218,79 @@ def get(self, forge, namespace, repo_name):
207
218
@ns .param ("namespace" , "Namespace" )
208
219
@ns .param ("repo_name" , "Repo Name" )
209
220
class ProjectIssues (Resource ):
221
+ @ns .expect (pagination_arguments )
210
222
@ns .response (
211
223
HTTPStatus .OK .value , "OK, project issues handled by Packit Service follow"
212
224
)
213
225
def get (self , forge , namespace , repo_name ):
214
226
"""Project issues"""
215
- return response_maker (
216
- [
217
- issue .issue_id
218
- for issue in GitProjectModel .get_project_issues (
219
- forge , namespace , repo_name
220
- )
221
- ]
227
+ first , last = indices ()
228
+
229
+ issues = [
230
+ issue .issue_id
231
+ for issue in GitProjectModel .get_project_issues (
232
+ first , last , forge , namespace , repo_name
233
+ )
234
+ ]
235
+
236
+ resp = response_maker (
237
+ issues ,
238
+ status = HTTPStatus .PARTIAL_CONTENT if issues else HTTPStatus .OK ,
222
239
)
223
240
241
+ resp .headers ["Content-Range" ] = f"git-project-issues { first + 1 } -{ last } /*"
242
+ return resp
243
+
224
244
225
245
@ns .route ("/<forge>/<namespace>/<repo_name>/releases" )
226
246
@ns .param ("forge" , "Git Forge" )
227
247
@ns .param ("namespace" , "Namespace" )
228
248
@ns .param ("repo_name" , "Repo Name" )
229
249
class ProjectReleases (Resource ):
250
+ @ns .expect (pagination_arguments )
230
251
@ns .response (
231
252
HTTPStatus .OK .value , "OK, project releases handled by Packit Service follow"
232
253
)
233
254
def get (self , forge , namespace , repo_name ):
234
255
"""Project releases"""
235
256
result = []
257
+ first , last = indices ()
258
+
236
259
for release in GitProjectModel .get_project_releases (
237
- forge , namespace , repo_name
260
+ first , last , forge , namespace , repo_name
238
261
):
239
262
release_info = {
240
263
"tag_name" : release .tag_name ,
241
264
"commit_hash" : release .commit_hash ,
242
265
}
243
266
result .append (release_info )
244
- return response_maker (result )
267
+
268
+ resp = response_maker (
269
+ result ,
270
+ status = HTTPStatus .PARTIAL_CONTENT if result else HTTPStatus .OK ,
271
+ )
272
+
273
+ resp .headers ["Content-Range" ] = f"git-project-releases { first + 1 } -{ last } /*"
274
+ return resp
245
275
246
276
247
277
@ns .route ("/<forge>/<namespace>/<repo_name>/branches" )
248
278
@ns .param ("forge" , "Git Forge" )
249
279
@ns .param ("namespace" , "Namespace" )
250
280
@ns .param ("repo_name" , "Repo Name" )
251
281
class ProjectBranches (Resource ):
282
+ @ns .expect (pagination_arguments )
252
283
@ns .response (
253
284
HTTPStatus .OK .value , "OK, project branches handled by Packit Service follow"
254
285
)
255
286
def get (self , forge , namespace , repo_name ):
256
287
"""Project branches"""
257
288
result = []
258
- for branch in GitProjectModel .get_project_branches (forge , namespace , repo_name ):
289
+ first , last = indices ()
290
+
291
+ for branch in GitProjectModel .get_project_branches (
292
+ first , last , forge , namespace , repo_name
293
+ ):
259
294
branch_info = {
260
295
"branch" : branch .name ,
261
296
"builds" : [],
@@ -300,4 +335,10 @@ def get(self, forge, namespace, repo_name):
300
335
branch_info ["tests" ].append (test_info )
301
336
result .append (branch_info )
302
337
303
- return response_maker (result )
338
+ resp = response_maker (
339
+ result ,
340
+ status = HTTPStatus .PARTIAL_CONTENT if result else HTTPStatus .OK ,
341
+ )
342
+
343
+ resp .headers ["Content-Range" ] = f"git-project-branches { first + 1 } -{ last } /*"
344
+ return resp
0 commit comments