Commit 79030a0e authored by Rémy Coutable's avatar Rémy Coutable

Merge branch '23532-define-common-helper-for-describe-pagination-params-in-api' into 'master'

Add concern for reuse pagination params declaration in API

Closes #23532

See merge request !7646
parents da0dd7ec 77cf855b
---
title: Define common helper for describe pagination params in api
merge_request: 7646
author: Semyon Pupkov
module API module API
class BroadcastMessages < Grape::API class BroadcastMessages < Grape::API
include PaginationParams
before { authenticate! } before { authenticate! }
before { authenticated_as_admin! } before { authenticated_as_admin! }
...@@ -15,8 +17,7 @@ module API ...@@ -15,8 +17,7 @@ module API
success Entities::BroadcastMessage success Entities::BroadcastMessage
end end
params do params do
optional :page, type: Integer, desc: 'Current page number' use :pagination
optional :per_page, type: Integer, desc: 'Number of messages per page'
end end
get do get do
messages = BroadcastMessage.all messages = BroadcastMessage.all
......
...@@ -3,6 +3,8 @@ require 'mime/types' ...@@ -3,6 +3,8 @@ require 'mime/types'
module API module API
# Projects commits API # Projects commits API
class Commits < Grape::API class Commits < Grape::API
include PaginationParams
before { authenticate! } before { authenticate! }
before { authorize! :download_code, user_project } before { authorize! :download_code, user_project }
...@@ -107,9 +109,8 @@ module API ...@@ -107,9 +109,8 @@ module API
failure [[404, 'Not Found']] failure [[404, 'Not Found']]
end end
params do params do
use :pagination
requires :sha, type: String, desc: 'A commit sha, or the name of a branch or tag' requires :sha, type: String, desc: 'A commit sha, or the name of a branch or tag'
optional :per_page, type: Integer, desc: 'The amount of items per page for paginaion'
optional :page, type: Integer, desc: 'The page number for pagination'
end end
get ':id/repository/commits/:sha/comments' do get ':id/repository/commits/:sha/comments' do
commit = user_project.commit(params[:sha]) commit = user_project.commit(params[:sha])
......
module API module API
# Deployments RESTfull API endpoints # Deployments RESTfull API endpoints
class Deployments < Grape::API class Deployments < Grape::API
include PaginationParams
before { authenticate! } before { authenticate! }
params do params do
...@@ -12,8 +14,7 @@ module API ...@@ -12,8 +14,7 @@ module API
success Entities::Deployment success Entities::Deployment
end end
params do params do
optional :page, type: Integer, desc: 'Page number of the current request' use :pagination
optional :per_page, type: Integer, desc: 'Number of items per page'
end end
get ':id/deployments' do get ':id/deployments' do
authorize! :read_deployment, user_project authorize! :read_deployment, user_project
......
module API module API
# Environments RESTfull API endpoints # Environments RESTfull API endpoints
class Environments < Grape::API class Environments < Grape::API
include PaginationParams
before { authenticate! } before { authenticate! }
params do params do
...@@ -12,8 +14,7 @@ module API ...@@ -12,8 +14,7 @@ module API
success Entities::Environment success Entities::Environment
end end
params do params do
optional :page, type: Integer, desc: 'Page number of the current request' use :pagination
optional :per_page, type: Integer, desc: 'Number of items per page'
end end
get ':id/environments' do get ':id/environments' do
authorize! :read_environment, user_project authorize! :read_environment, user_project
......
module API
# Concern for declare pagination params.
#
# @example
# class CustomApiResource < Grape::API
# include PaginationParams
#
# params do
# use :pagination
# end
# end
module PaginationParams
extend ActiveSupport::Concern
included do
helpers do
params :pagination do
optional :page, type: Integer, desc: 'Current page number'
optional :per_page, type: Integer, desc: 'Number of items per page'
end
end
end
end
end
module API module API
class Pipelines < Grape::API class Pipelines < Grape::API
include PaginationParams
before { authenticate! } before { authenticate! }
params do params do
...@@ -11,8 +13,7 @@ module API ...@@ -11,8 +13,7 @@ module API
success Entities::Pipeline success Entities::Pipeline
end end
params do params do
optional :page, type: Integer, desc: 'Page number of the current request' use :pagination
optional :per_page, type: Integer, desc: 'Number of items per page'
optional :scope, type: String, values: ['running', 'branches', 'tags'], optional :scope, type: String, values: ['running', 'branches', 'tags'],
desc: 'Either running, branches, or tags' desc: 'Either running, branches, or tags'
end end
......
module API module API
# Projects variables API # Projects variables API
class Variables < Grape::API class Variables < Grape::API
include PaginationParams
before { authenticate! } before { authenticate! }
before { authorize! :admin_build, user_project } before { authorize! :admin_build, user_project }
...@@ -13,8 +15,7 @@ module API ...@@ -13,8 +15,7 @@ module API
success Entities::Variable success Entities::Variable
end end
params do params do
optional :page, type: Integer, desc: 'The page number for pagination' use :pagination
optional :per_page, type: Integer, desc: 'The value of items per page to show'
end end
get ':id/variables' do get ':id/variables' do
variables = user_project.variables variables = user_project.variables
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment