diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-01-18 19:00:14 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-01-18 19:00:14 +0000 |
commit | 05f0ebba3a2c8ddf39e436f412dc2ab5bf1353b2 (patch) | |
tree | 11d0f2a6ec31c7793c184106cedc2ded3d9a2cc5 /lib/api/rubygem_packages.rb | |
parent | ec73467c23693d0db63a797d10194da9e72a74af (diff) | |
download | gitlab-ce-05f0ebba3a2c8ddf39e436f412dc2ab5bf1353b2.tar.gz |
Add latest changes from gitlab-org/gitlab@15-8-stable-eev15.8.0-rc42
Diffstat (limited to 'lib/api/rubygem_packages.rb')
-rw-r--r-- | lib/api/rubygem_packages.rb | 32 |
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 |