Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/api/composer_packages.rb')
-rw-r--r--lib/api/composer_packages.rb90
1 files changed, 71 insertions, 19 deletions
diff --git a/lib/api/composer_packages.rb b/lib/api/composer_packages.rb
index d9806fa37d1..3819e6d236d 100644
--- a/lib/api/composer_packages.rb
+++ b/lib/api/composer_packages.rb
@@ -61,32 +61,56 @@ module API
end
params do
- requires :id, type: String, desc: 'The ID of a group'
+ requires :id, types: [String, Integer], desc: 'The ID or URL-encoded path of a group'
end
resource :group, requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do
- before do
+ after_validation do
user_group
end
- desc 'Composer packages endpoint at group level'
+ desc 'Composer packages endpoint at group level' do
+ detail 'This feature was introduced in GitLab 13.1'
+ success code: 200
+ failure [
+ { code: 401, message: 'Unauthorized' },
+ { code: 404, message: 'Not Found' }
+ ]
+ tags %w[composer_packages]
+ end
route_setting :authentication, job_token_allowed: true, basic_auth_personal_access_token: true, deploy_token_allowed: true
get ':id/-/packages/composer/packages', urgency: :low do
presenter.root
end
- desc 'Composer packages endpoint at group level for packages list'
+ desc 'Composer packages endpoint at group level for packages list' do
+ detail 'This feature was introduced in GitLab 13.1'
+ success code: 200
+ failure [
+ { code: 401, message: 'Unauthorized' },
+ { code: 404, message: 'Not Found' }
+ ]
+ tags %w[composer_packages]
+ end
params do
- requires :sha, type: String, desc: 'Shasum of current json'
+ requires :sha, type: String, desc: 'Shasum of current json', documentation: { example: '673594f85a55fe3c0eb45df7bd2fa9d95a1601ab' }
end
route_setting :authentication, job_token_allowed: true, basic_auth_personal_access_token: true, deploy_token_allowed: true
get ':id/-/packages/composer/p/:sha', urgency: :low do
presenter.provider
end
- desc 'Composer v2 packages p2 endpoint at group level for package versions metadata'
+ desc 'Composer v2 packages p2 endpoint at group level for package versions metadata' do
+ detail 'This feature was introduced in GitLab 13.1'
+ success code: 200
+ failure [
+ { code: 401, message: 'Unauthorized' },
+ { code: 404, message: 'Not Found' }
+ ]
+ tags %w[composer_packages]
+ end
params do
- requires :package_name, type: String, file_path: true, desc: 'The Composer package name'
+ requires :package_name, type: String, file_path: true, desc: 'The Composer package name', documentation: { example: 'my-composer-package' }
end
route_setting :authentication, job_token_allowed: true, basic_auth_personal_access_token: true, deploy_token_allowed: true
get ':id/-/packages/composer/p2/*package_name', requirements: COMPOSER_ENDPOINT_REQUIREMENTS, file_path: true, urgency: :low do
@@ -95,9 +119,17 @@ module API
presenter.package_versions
end
- desc 'Composer packages endpoint at group level for package versions metadata'
+ desc 'Composer packages endpoint at group level for package versions metadata' do
+ detail 'This feature was introduced in GitLab 12.1'
+ success code: 200
+ failure [
+ { code: 401, message: 'Unauthorized' },
+ { code: 404, message: 'Not Found' }
+ ]
+ tags %w[composer_packages]
+ end
params do
- requires :package_name, type: String, file_path: true, desc: 'The Composer package name'
+ requires :package_name, type: String, file_path: true, desc: 'The Composer package name', documentation: { example: 'my-composer-package' }
end
route_setting :authentication, job_token_allowed: true, basic_auth_personal_access_token: true, deploy_token_allowed: true
get ':id/-/packages/composer/*package_name', requirements: COMPOSER_ENDPOINT_REQUIREMENTS, file_path: true, urgency: :low do
@@ -109,17 +141,27 @@ module API
end
params do
- requires :id, type: Integer, desc: 'The ID of a project'
+ requires :id, types: [String, Integer], desc: 'The ID or URL-encoded path of a project'
end
resource :projects, requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do
- desc 'Composer packages endpoint for registering packages'
namespace ':id/packages/composer' do
route_setting :authentication, job_token_allowed: true, basic_auth_personal_access_token: true, deploy_token_allowed: true
+ desc 'Composer packages endpoint for registering packages' do
+ detail 'This feature was introduced in GitLab 13.1'
+ success code: 201
+ failure [
+ { code: 400, message: 'Bad Request' },
+ { code: 401, message: 'Unauthorized' },
+ { code: 403, message: 'Forbidden' },
+ { code: 404, message: 'Not Found' }
+ ]
+ tags %w[composer_packages]
+ end
params do
- optional :branch, type: String, desc: 'The name of the branch'
- optional :tag, type: String, desc: 'The name of the tag'
+ optional :branch, type: String, desc: 'The name of the branch', documentation: { example: 'release' }
+ optional :tag, type: String, desc: 'The name of the tag', documentation: { example: 'v1.0.0' }
exactly_one_of :tag, :branch
end
post urgency: :low do
@@ -142,15 +184,25 @@ module API
created!
end
+ desc 'Composer package endpoint to download a package archive' do
+ detail 'This feature was introduced in GitLab 13.1'
+ success code: 200
+ failure [
+ { code: 401, message: 'Unauthorized' },
+ { code: 403, message: 'Forbidden' },
+ { code: 404, message: 'Not Found' }
+ ]
+ tags %w[composer_packages]
+ end
params do
- requires :sha, type: String, desc: 'Shasum of current json'
- requires :package_name, type: String, file_path: true, desc: 'The Composer package name'
+ requires :sha, type: String, desc: 'Shasum of current json', documentation: { example: '673594f85a55fe3c0eb45df7bd2fa9d95a1601ab' }
+ requires :package_name, type: String, file_path: true, desc: 'The Composer package name', documentation: { example: 'my-composer-package' }
end
route_setting :authentication, job_token_allowed: true, basic_auth_personal_access_token: true, deploy_token_allowed: true
get 'archives/*package_name', urgency: :default do
- authorize_read_package!(authorized_user_project)
+ project = authorized_user_project(action: :read_package)
- package = authorized_user_project
+ package = project
.packages
.composer
.with_name(params[:package_name])
@@ -160,10 +212,10 @@ module API
not_found! unless metadata
- track_package_event('pull_package', :composer, project: authorized_user_project, namespace: authorized_user_project.namespace)
+ track_package_event('pull_package', :composer, project: project, namespace: project.namespace)
package.touch_last_downloaded_at
- send_git_archive authorized_user_project.repository, ref: metadata.target_sha, format: 'zip', append_sha: true
+ send_git_archive project.repository, ref: metadata.target_sha, format: 'zip', append_sha: true
end
end
end