diff options
Diffstat (limited to 'lib/api/debian_group_packages.rb')
-rw-r--r-- | lib/api/debian_group_packages.rb | 47 |
1 files changed, 31 insertions, 16 deletions
diff --git a/lib/api/debian_group_packages.rb b/lib/api/debian_group_packages.rb index 191ed42a5b8..29f5047230a 100644 --- a/lib/api/debian_group_packages.rb +++ b/lib/api/debian_group_packages.rb @@ -2,35 +2,50 @@ module API class DebianGroupPackages < ::API::Base - params do - requires :id, type: String, desc: 'The ID of a group' - end + PACKAGE_FILE_REQUIREMENTS = ::API::DebianProjectPackages::PACKAGE_FILE_REQUIREMENTS.merge( + project_id: %r{[0-9]+}.freeze + ).freeze resource :groups, requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do - rescue_from ArgumentError do |e| - render_api_error!(e.message, 400) - end + helpers do + def user_project + @project ||= find_project!(params[:project_id]) + end - rescue_from ActiveRecord::RecordInvalid do |e| - render_api_error!(e.message, 400) + def project_or_group + user_group + end end - before do + after_validation do require_packages_enabled! - not_found! unless ::Feature.enabled?(:debian_packages, user_group) + not_found! unless ::Feature.enabled?(:debian_group_packages, user_group) authorize_read_package!(user_group) end - namespace ':id/-' do - helpers do - def project_or_group - user_group - end - end + params do + requires :id, type: String, desc: 'The ID of a group' + end + namespace ':id/-/packages/debian' do include ::API::Concerns::Packages::DebianPackageEndpoints + + # GET groups/:id/packages/debian/pool/:distribution/:project_id/:letter/:package_name/:package_version/:file_name + params do + requires :project_id, type: Integer, desc: 'The Project Id' + use :shared_package_file_params + end + + desc 'The package' do + detail 'This feature was introduced in GitLab 14.2' + end + + route_setting :authentication, authenticate_non_public: true + get 'pool/:distribution/:project_id/:letter/:package_name/:package_version/:file_name', requirements: PACKAGE_FILE_REQUIREMENTS do + present_package_file! + end end end end |