Skip to content
Snippets Groups Projects
Verified Commit 63360ade authored by Rémy Coutable's avatar Rémy Coutable
Browse files

Add `requirements: { id: %r{[^/]+} }` for all projects and groups namespaced API routes


Signed-off-by: default avatarRémy Coutable <remy@rymai.me>
parent c9abdadd
No related branches found
No related tags found
No related merge requests found
Showing
with 35 additions and 26 deletions
---
title: 'Add `requirements: { id: /.+/ }` for all projects and groups namespaced API
routes'
merge_request: 9944
author:
Loading
Loading
@@ -10,7 +10,7 @@ class AccessRequests < Grape::API
params do
requires :id, type: String, desc: "The #{source_type} ID"
end
resource source_type.pluralize do
resource source_type.pluralize, requirements: { id: %r{[^/]+} } do
desc "Gets a list of access requests for a #{source_type}." do
detail 'This feature was introduced in GitLab 8.11.'
success Entities::AccessRequester
Loading
Loading
Loading
Loading
@@ -9,13 +9,15 @@ class AwardEmoji < Grape::API
{ type: 'snippet', find_by: :id }
].freeze
 
resource :projects do
params do
requires :id, type: String, desc: 'The ID of a project'
end
resource :projects, requirements: { id: %r{[^/]+} } do
AWARDABLES.each do |awardable_params|
awardable_string = awardable_params[:type].pluralize
awardable_id_string = "#{awardable_params[:type]}_#{awardable_params[:find_by]}"
 
params do
requires :id, type: String, desc: 'The ID of a project'
requires :"#{awardable_id_string}", type: Integer, desc: "The ID of an Issue, Merge Request or Snippet"
end
 
Loading
Loading
Loading
Loading
@@ -7,7 +7,7 @@ class Boards < Grape::API
params do
requires :id, type: String, desc: 'The ID of a project'
end
resource :projects do
resource :projects, requirements: { id: %r{[^/]+} } do
desc 'Get all project boards' do
detail 'This feature was introduced in 8.13'
success Entities::Board
Loading
Loading
Loading
Loading
@@ -10,7 +10,7 @@ class Branches < Grape::API
params do
requires :id, type: String, desc: 'The ID of a project'
end
resource :projects do
resource :projects, requirements: { id: %r{[^/]+} } do
desc 'Get a project repository branches' do
success Entities::RepoBranch
end
Loading
Loading
Loading
Loading
@@ -2,7 +2,10 @@
 
module API
class CommitStatuses < Grape::API
resource :projects do
params do
requires :id, type: String, desc: 'The ID of a project'
end
resource :projects, requirements: { id: %r{[^/]+} } do
include PaginationParams
 
before { authenticate! }
Loading
Loading
@@ -11,7 +14,6 @@ class CommitStatuses < Grape::API
success Entities::CommitStatus
end
params do
requires :id, type: String, desc: 'The ID of a project'
requires :sha, type: String, desc: 'The commit hash'
optional :ref, type: String, desc: 'The ref'
optional :stage, type: String, desc: 'The stage'
Loading
Loading
@@ -37,7 +39,6 @@ class CommitStatuses < Grape::API
success Entities::CommitStatus
end
params do
requires :id, type: String, desc: 'The ID of a project'
requires :sha, type: String, desc: 'The commit hash'
requires :state, type: String, desc: 'The state of the status',
values: %w(pending running success failed canceled)
Loading
Loading
Loading
Loading
@@ -10,7 +10,7 @@ class Commits < Grape::API
params do
requires :id, type: String, desc: 'The ID of a project'
end
resource :projects, requirements: { id: /.+/ } do
resource :projects, requirements: { id: %r{[^/]+} } do
desc 'Get a project repository commits' do
success Entities::RepoCommit
end
Loading
Loading
Loading
Loading
@@ -17,7 +17,7 @@ class DeployKeys < Grape::API
params do
requires :id, type: String, desc: 'The ID of the project'
end
resource :projects do
resource :projects, requirements: { id: %r{[^/]+} } do
before { authorize_admin_project }
 
desc "Get a specific project's deploy keys" do
Loading
Loading
Loading
Loading
@@ -8,7 +8,7 @@ class Deployments < Grape::API
params do
requires :id, type: String, desc: 'The project ID'
end
resource :projects do
resource :projects, requirements: { id: %r{[^/]+} } do
desc 'Get all deployments of the project' do
detail 'This feature was introduced in GitLab 8.11.'
success Entities::Deployment
Loading
Loading
Loading
Loading
@@ -9,7 +9,7 @@ class Environments < Grape::API
params do
requires :id, type: String, desc: 'The project ID'
end
resource :projects do
resource :projects, requirements: { id: %r{[^/]+} } do
desc 'Get all environments of the project' do
detail 'This feature was introduced in GitLab 8.11.'
success Entities::Environment
Loading
Loading
Loading
Loading
@@ -52,7 +52,7 @@ def commit_response(attrs)
params do
requires :id, type: String, desc: 'The project ID'
end
resource :projects do
resource :projects, requirements: { id: %r{[^/]+} } do
desc 'Get raw file contents from the repository'
params do
requires :file_path, type: String, desc: 'The url encoded path to the file. Ex. lib%2Fclass%2Erb'
Loading
Loading
Loading
Loading
@@ -84,7 +84,7 @@ def present_groups(groups, options = {})
params do
requires :id, type: String, desc: 'The ID of a group'
end
resource :groups do
resource :groups, requirements: { id: %r{[^/]+} } do
desc 'Update a group. Available only for users who can administrate groups.' do
success Entities::Group
end
Loading
Loading
@@ -154,7 +154,7 @@ def present_groups(groups, options = {})
params do
requires :project_id, type: String, desc: 'The ID or path of the project'
end
post ":id/projects/:project_id" do
post ":id/projects/:project_id", requirements: { project_id: /.+/ } do
authenticated_as_admin!
group = find_group!(params[:id])
project = find_project!(params[:project_id])
Loading
Loading
Loading
Loading
@@ -58,7 +58,7 @@ def find_issues(args = {})
params do
requires :id, type: String, desc: 'The ID of a group'
end
resource :groups do
resource :groups, requirements: { id: %r{[^/]+} } do
desc 'Get a list of group issues' do
success Entities::IssueBasic
end
Loading
Loading
@@ -79,7 +79,7 @@ def find_issues(args = {})
params do
requires :id, type: String, desc: 'The ID of a project'
end
resource :projects do
resource :projects, requirements: { id: %r{[^/]+} } do
include TimeTrackingEndpoints
 
desc 'Get a list of project issues' do
Loading
Loading
Loading
Loading
@@ -7,7 +7,7 @@ class Jobs < Grape::API
params do
requires :id, type: String, desc: 'The ID of a project'
end
resource :projects do
resource :projects, requirements: { id: %r{[^/]+} } do
helpers do
params :optional_scope do
optional :scope, types: [String, Array[String]], desc: 'The scope of builds to show',
Loading
Loading
Loading
Loading
@@ -7,7 +7,7 @@ class Labels < Grape::API
params do
requires :id, type: String, desc: 'The ID of a project'
end
resource :projects do
resource :projects, requirements: { id: %r{[^/]+} } do
desc 'Get all labels of the project' do
success Entities::Label
end
Loading
Loading
Loading
Loading
@@ -10,7 +10,7 @@ class Members < Grape::API
params do
requires :id, type: String, desc: "The #{source_type} ID"
end
resource source_type.pluralize do
resource source_type.pluralize, requirements: { id: %r{[^/]+} } do
desc 'Gets a list of group or project members viewable by the authenticated user.' do
success Entities::Member
end
Loading
Loading
Loading
Loading
@@ -5,14 +5,16 @@ class MergeRequestDiffs < Grape::API
 
before { authenticate! }
 
resource :projects do
params do
requires :id, type: String, desc: 'The ID of a project'
end
resource :projects, requirements: { id: %r{[^/]+} } do
desc 'Get a list of merge request diff versions' do
detail 'This feature was introduced in GitLab 8.12.'
success Entities::MergeRequestDiff
end
 
params do
requires :id, type: String, desc: 'The ID of a project'
requires :merge_request_iid, type: Integer, desc: 'The IID of a merge request'
use :pagination
end
Loading
Loading
@@ -28,7 +30,6 @@ class MergeRequestDiffs < Grape::API
end
 
params do
requires :id, type: String, desc: 'The ID of a project'
requires :merge_request_iid, type: Integer, desc: 'The IID of a merge request'
requires :version_id, type: Integer, desc: 'The ID of a merge request diff version'
end
Loading
Loading
Loading
Loading
@@ -7,7 +7,7 @@ class MergeRequests < Grape::API
params do
requires :id, type: String, desc: 'The ID of a project'
end
resource :projects do
resource :projects, requirements: { id: %r{[^/]+} } do
include TimeTrackingEndpoints
 
helpers do
Loading
Loading
Loading
Loading
@@ -23,7 +23,7 @@ def filter_milestones_state(milestones, state)
params do
requires :id, type: String, desc: 'The ID of a project'
end
resource :projects do
resource :projects, requirements: { id: %r{[^/]+} } do
desc 'Get a list of project milestones' do
success Entities::Milestone
end
Loading
Loading
Loading
Loading
@@ -9,7 +9,7 @@ class Notes < Grape::API
params do
requires :id, type: String, desc: 'The ID of a project'
end
resource :projects do
resource :projects, requirements: { id: %r{[^/]+} } do
NOTEABLE_TYPES.each do |noteable_type|
noteables_str = noteable_type.to_s.underscore.pluralize
 
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment