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/rubygem_packages.rb')
-rw-r--r--lib/api/rubygem_packages.rb32
1 files changed, 19 insertions, 13 deletions
diff --git a/lib/api/rubygem_packages.rb b/lib/api/rubygem_packages.rb
index af0ceb1acfc..896d8fcc727 100644
--- a/lib/api/rubygem_packages.rb
+++ b/lib/api/rubygem_packages.rb
@@ -25,13 +25,19 @@ module API
.sent_through(:http_token)
end
+ helpers do
+ def project
+ user_project(action: :read_package)
+ end
+ end
+
before do
require_packages_enabled!
authenticate_non_get!
end
after_validation do
- not_found! unless Feature.enabled?(:rubygem_packages, user_project)
+ not_found! unless Feature.enabled?(:rubygem_packages, project)
end
params do
@@ -85,14 +91,14 @@ module API
requires :file_name, type: String, desc: 'Package file name', documentation: { type: 'file' }
end
get "gems/:file_name", requirements: FILE_NAME_REQUIREMENTS do
- authorize_read_package!(user_project)
+ authorize_read_package!(project)
package_files = ::Packages::PackageFile
- .for_rubygem_with_file_name(user_project, params[:file_name])
+ .for_rubygem_with_file_name(project, params[:file_name])
package_file = package_files.installable.last!
- track_package_event('pull_package', :rubygems, project: user_project, namespace: user_project.namespace)
+ track_package_event('pull_package', :rubygems, project: project, namespace: project.namespace)
present_package_file!(package_file)
end
@@ -109,9 +115,9 @@ module API
end
post 'gems/authorize' do
authorize_workhorse!(
- subject: user_project,
+ subject: project,
has_length: false,
- maximum_size: user_project.actual_limits.rubygems_max_file_size
+ maximum_size: project.actual_limits.rubygems_max_file_size
)
end
@@ -129,16 +135,16 @@ module API
requires :file, type: ::API::Validations::Types::WorkhorseFile, desc: 'The package file to be published (generated by Multipart middleware)', documentation: { type: 'file' }
end
post 'gems' do
- authorize_upload!(user_project)
- bad_request!('File is too large') if user_project.actual_limits.exceeded?(:rubygems_max_file_size, params[:file].size)
+ authorize_upload!(project)
+ bad_request!('File is too large') if project.actual_limits.exceeded?(:rubygems_max_file_size, params[:file].size)
- track_package_event('push_package', :rubygems, user: current_user, project: user_project, namespace: user_project.namespace)
+ track_package_event('push_package', :rubygems, user: current_user, project: project, namespace: project.namespace)
package_file = nil
ApplicationRecord.transaction do
package = ::Packages::CreateTemporaryPackageService.new(
- user_project, current_user, declared_params.merge(build: current_authenticated_job)
+ project, current_user, declared_params.merge(build: current_authenticated_job)
).execute(:rubygems, name: ::Packages::Rubygems::TEMPORARY_PACKAGE_NAME)
file_params = {
@@ -159,7 +165,7 @@ module API
bad_request!('Package creation failed')
end
rescue ObjectStorage::RemoteStoreError => e
- Gitlab::ErrorTracking.track_exception(e, extra: { file_name: params[:file_name], project_id: user_project.id })
+ Gitlab::ErrorTracking.track_exception(e, extra: { file_name: params[:file_name], project_id: project.id })
forbidden!
end
@@ -179,13 +185,13 @@ module API
optional :gems, type: Array[String], coerce_with: ::API::Validations::Types::CommaSeparatedToArray.coerce, desc: 'Comma delimited gem names'
end
get 'dependencies' do
- authorize_read_package!
+ authorize_read_package!(project)
if params[:gems].blank?
status :ok
else
results = params[:gems].map do |gem_name|
- service_result = Packages::Rubygems::DependencyResolverService.new(user_project, current_user, gem_name: gem_name).execute
+ service_result = Packages::Rubygems::DependencyResolverService.new(project, current_user, gem_name: gem_name).execute
render_api_error!(service_result.message, service_result.http_status) if service_result.error?
service_result.payload