Skip to content

Commit 74c8669

Browse files
committed
Use the pagination helper in the API
1 parent bd67459 commit 74c8669

16 files changed

+84
-20
lines changed

lib/api/access_requests.rb

+5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
module API
22
class AccessRequests < Grape::API
3+
include PaginationParams
4+
35
before { authenticate! }
46

57
helpers ::API::Helpers::MembersHelpers
@@ -13,6 +15,9 @@ class AccessRequests < Grape::API
1315
detail 'This feature was introduced in GitLab 8.11.'
1416
success Entities::AccessRequester
1517
end
18+
params do
19+
use :pagination
20+
end
1621
get ":id/access_requests" do
1722
source = find_source(source_type, params[:id])
1823

lib/api/award_emoji.rb

+5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
module API
22
class AwardEmoji < Grape::API
3+
include PaginationParams
4+
35
before { authenticate! }
46
AWARDABLES = %w[issue merge_request snippet]
57

@@ -21,6 +23,9 @@ class AwardEmoji < Grape::API
2123
detail 'This feature was introduced in 8.9'
2224
success Entities::AwardEmoji
2325
end
26+
params do
27+
use :pagination
28+
end
2429
get endpoint do
2530
if can_read_awardable?
2631
awards = paginate(awardable.award_emoji)

lib/api/builds.rb

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
module API
2-
# Projects builds API
32
class Builds < Grape::API
3+
include PaginationParams
4+
45
before { authenticate! }
56

67
params do
@@ -28,6 +29,7 @@ class Builds < Grape::API
2829
end
2930
params do
3031
use :optional_scope
32+
use :pagination
3133
end
3234
get ':id/builds' do
3335
builds = user_project.builds.order('id DESC')
@@ -41,8 +43,9 @@ class Builds < Grape::API
4143
success Entities::Build
4244
end
4345
params do
44-
requires :sha, type: String, desc: 'The SHA id of a commit'
46+
requires :sha, type: String, desc: 'The SHA id of a commit'
4547
use :optional_scope
48+
use :pagination
4649
end
4750
get ':id/repository/commits/:sha/builds' do
4851
authorize_read_builds!

lib/api/commit_statuses.rb

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
require 'mime/types'
22

33
module API
4-
# Project commit statuses API
54
class CommitStatuses < Grape::API
65
resource :projects do
6+
include PaginationParams
7+
78
before { authenticate! }
89

910
desc "Get a commit's statuses" do
@@ -16,6 +17,7 @@ class CommitStatuses < Grape::API
1617
optional :stage, type: String, desc: 'The stage'
1718
optional :name, type: String, desc: 'The name'
1819
optional :all, type: String, desc: 'Show all statuses, default: false'
20+
use :pagination
1921
end
2022
get ':id/repository/commits/:sha/statuses' do
2123
authorize!(:read_commit_status, user_project)

lib/api/groups.rb

+10-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
module API
22
class Groups < Grape::API
3+
include PaginationParams
4+
35
before { authenticate! }
46

57
helpers do
@@ -21,6 +23,7 @@ class Groups < Grape::API
2123
optional :search, type: String, desc: 'Search for a specific group'
2224
optional :order_by, type: String, values: %w[name path], default: 'name', desc: 'Order by name or path'
2325
optional :sort, type: String, values: %w[asc desc], default: 'asc', desc: 'Sort by asc (ascending) or desc (descending)'
26+
use :pagination
2427
end
2528
get do
2629
groups = if current_user.admin
@@ -41,6 +44,9 @@ class Groups < Grape::API
4144
desc 'Get list of owned groups for authenticated user' do
4245
success Entities::Group
4346
end
47+
params do
48+
use :pagination
49+
end
4450
get '/owned' do
4551
groups = current_user.owned_groups
4652
present paginate(groups), with: Entities::Group, user: current_user
@@ -110,11 +116,13 @@ class Groups < Grape::API
110116
desc 'Get a list of projects in this group.' do
111117
success Entities::Project
112118
end
119+
params do
120+
use :pagination
121+
end
113122
get ":id/projects" do
114123
group = find_group!(params[:id])
115124
projects = GroupProjectsFinder.new(group).execute(current_user)
116-
projects = paginate projects
117-
present projects, with: Entities::Project, user: current_user
125+
present paginate(projects), with: Entities::Project, user: current_user
118126
end
119127

120128
desc 'Transfer a project to the group namespace. Available only for admin.' do

lib/api/members.rb

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
module API
22
class Members < Grape::API
3+
include PaginationParams
4+
35
before { authenticate! }
46

57
helpers ::API::Helpers::MembersHelpers
@@ -14,15 +16,15 @@ class Members < Grape::API
1416
end
1517
params do
1618
optional :query, type: String, desc: 'A query string to search for members'
19+
use :pagination
1720
end
1821
get ":id/members" do
1922
source = find_source(source_type, params[:id])
2023

2124
users = source.users
2225
users = users.merge(User.search(params[:query])) if params[:query]
23-
users = paginate(users)
2426

25-
present users, with: Entities::Member, source: source
27+
present paginate(users), with: Entities::Member, source: source
2628
end
2729

2830
desc 'Gets a member of a group or project.' do

lib/api/merge_requests.rb

+9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
module API
22
class MergeRequests < Grape::API
3+
include PaginationParams
4+
35
DEPRECATION_MESSAGE = 'This endpoint is deprecated and will be removed in GitLab 9.0.'.freeze
46

57
before { authenticate! }
@@ -42,6 +44,7 @@ def handle_merge_request_errors!(errors)
4244
optional :sort, type: String, values: %w[asc desc], default: 'desc',
4345
desc: 'Return merge requests sorted in `asc` or `desc` order.'
4446
optional :iid, type: Array[Integer], desc: 'The IID of the merge requests'
47+
use :pagination
4548
end
4649
get ":id/merge_requests" do
4750
authorize! :read_merge_request, user_project
@@ -218,6 +221,9 @@ def handle_merge_request_errors!(errors)
218221
detail 'Duplicate. DEPRECATED and WILL BE REMOVED in 9.0'
219222
success Entities::MRNote
220223
end
224+
params do
225+
use :pagination
226+
end
221227
get "#{path}/comments" do
222228
merge_request = user_project.merge_requests.find(params[:merge_request_id])
223229

@@ -255,6 +261,9 @@ def handle_merge_request_errors!(errors)
255261
desc 'List issues that will be closed on merge' do
256262
success Entities::MRNote
257263
end
264+
params do
265+
use :pagination
266+
end
258267
get "#{path}/closes_issues" do
259268
merge_request = user_project.merge_requests.find(params[:merge_request_id])
260269
issues = ::Kaminari.paginate_array(merge_request.closes_issues(current_user))

lib/api/milestones.rb

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
module API
2-
# Milestones API
32
class Milestones < Grape::API
3+
include PaginationParams
4+
45
before { authenticate! }
56

67
helpers do
@@ -30,6 +31,7 @@ def filter_milestones_state(milestones, state)
3031
optional :state, type: String, values: %w[active closed all], default: 'all',
3132
desc: 'Return "active", "closed", or "all" milestones'
3233
optional :iid, type: Array[Integer], desc: 'The IID of the milestone'
34+
use :pagination
3335
end
3436
get ":id/milestones" do
3537
authorize! :read_milestone, user_project
@@ -103,6 +105,7 @@ def filter_milestones_state(milestones, state)
103105
end
104106
params do
105107
requires :milestone_id, type: Integer, desc: 'The ID of a project milestone'
108+
use :pagination
106109
end
107110
get ":id/milestones/:milestone_id/issues" do
108111
authorize! :read_milestone, user_project

lib/api/namespaces.rb

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
module API
2-
# namespaces API
32
class Namespaces < Grape::API
3+
include PaginationParams
4+
45
before { authenticate! }
56

67
resource :namespaces do
@@ -9,6 +10,7 @@ class Namespaces < Grape::API
910
end
1011
params do
1112
optional :search, type: String, desc: "Search query for namespaces"
13+
use :pagination
1214
end
1315
get do
1416
namespaces = current_user.admin ? Namespace.all : current_user.namespaces

lib/api/notes.rb

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
module API
2-
# Notes API
32
class Notes < Grape::API
3+
include PaginationParams
4+
45
before { authenticate! }
56

67
NOTEABLE_TYPES = [Issue, MergeRequest, Snippet]
@@ -17,6 +18,7 @@ class Notes < Grape::API
1718
end
1819
params do
1920
requires :noteable_id, type: Integer, desc: 'The ID of the noteable'
21+
use :pagination
2022
end
2123
get ":id/#{noteables_str}/:noteable_id/notes" do
2224
noteable = user_project.send(noteables_str.to_sym).find(params[:noteable_id])

lib/api/project_hooks.rb

+8-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
module API
2-
# Projects API
32
class ProjectHooks < Grape::API
3+
include PaginationParams
4+
5+
before { authenticate! }
6+
before { authorize_admin_project }
7+
48
helpers do
59
params :project_hook_properties do
610
requires :url, type: String, desc: "The URL to send the request to"
@@ -17,16 +21,16 @@ class ProjectHooks < Grape::API
1721
end
1822
end
1923

20-
before { authenticate! }
21-
before { authorize_admin_project }
22-
2324
params do
2425
requires :id, type: String, desc: 'The ID of a project'
2526
end
2627
resource :projects do
2728
desc 'Get project hooks' do
2829
success Entities::ProjectHook
2930
end
31+
params do
32+
use :pagination
33+
end
3034
get ":id/hooks" do
3135
hooks = paginate user_project.hooks
3236

lib/api/project_snippets.rb

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
module API
2-
# Projects API
32
class ProjectSnippets < Grape::API
3+
include PaginationParams
4+
45
before { authenticate! }
56

67
params do
@@ -24,6 +25,9 @@ def snippets_for_current_user
2425
desc 'Get all project snippets' do
2526
success Entities::ProjectSnippet
2627
end
28+
params do
29+
use :pagination
30+
end
2731
get ":id/snippets" do
2832
present paginate(snippets_for_current_user), with: Entities::ProjectSnippet
2933
end

lib/api/runners.rb

+5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
module API
22
class Runners < Grape::API
3+
include PaginationParams
4+
35
before { authenticate! }
46

57
resource :runners do
@@ -9,6 +11,7 @@ class Runners < Grape::API
911
params do
1012
optional :scope, type: String, values: %w[active paused online],
1113
desc: 'The scope of specific runners to show'
14+
use :pagination
1215
end
1316
get do
1417
runners = filter_runners(current_user.ci_authorized_runners, params[:scope], without: ['specific', 'shared'])
@@ -21,6 +24,7 @@ class Runners < Grape::API
2124
params do
2225
optional :scope, type: String, values: %w[active paused online specific shared],
2326
desc: 'The scope of specific runners to show'
27+
use :pagination
2428
end
2529
get 'all' do
2630
authenticated_as_admin!
@@ -91,6 +95,7 @@ class Runners < Grape::API
9195
params do
9296
optional :scope, type: String, values: %w[active paused online specific shared],
9397
desc: 'The scope of specific runners to show'
98+
use :pagination
9499
end
95100
get ':id/runners' do
96101
runners = filter_runners(Ci::Runner.owned_or_shared(user_project.id), params[:scope])

lib/api/todos.rb

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
module API
2-
# Todos API
32
class Todos < Grape::API
3+
include PaginationParams
4+
45
before { authenticate! }
56

67
ISSUABLE_TYPES = {
@@ -44,10 +45,11 @@ def find_todos
4445
desc 'Get a todo list' do
4546
success Entities::Todo
4647
end
48+
params do
49+
use :pagination
50+
end
4751
get do
48-
todos = find_todos
49-
50-
present paginate(todos), with: Entities::Todo, current_user: current_user
52+
present paginate(find_todos), with: Entities::Todo, current_user: current_user
5153
end
5254

5355
desc 'Mark a todo as done' do

lib/api/triggers.rb

+5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
module API
22
class Triggers < Grape::API
3+
include PaginationParams
4+
35
params do
46
requires :id, type: String, desc: 'The ID of a project'
57
end
@@ -42,6 +44,9 @@ class Triggers < Grape::API
4244
desc 'Get triggers list' do
4345
success Entities::Trigger
4446
end
47+
params do
48+
use :pagination
49+
end
4550
get ':id/triggers' do
4651
authenticate!
4752
authorize! :admin_build, user_project

lib/api/users.rb

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
module API
2-
# Users API
32
class Users < Grape::API
3+
include PaginationParams
4+
45
before { authenticate! }
56

67
resource :users, requirements: { uid: /[0-9]*/, id: /[0-9]*/ } do
@@ -33,6 +34,7 @@ class Users < Grape::API
3334
optional :active, type: Boolean, default: false, desc: 'Filters only active users'
3435
optional :external, type: Boolean, default: false, desc: 'Filters only external users'
3536
optional :blocked, type: Boolean, default: false, desc: 'Filters only blocked users'
37+
use :pagination
3638
end
3739
get do
3840
unless can?(current_user, :read_users_list, nil)
@@ -330,6 +332,7 @@ class Users < Grape::API
330332
end
331333
params do
332334
requires :id, type: Integer, desc: 'The ID of the user'
335+
use :pagination
333336
end
334337
get ':id/events' do
335338
user = User.find_by(id: params[:id])

0 commit comments

Comments
 (0)