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/debian_group_packages.rb')
-rw-r--r--lib/api/debian_group_packages.rb47
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