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/rpm_project_packages.rb')
-rw-r--r--lib/api/rpm_project_packages.rb27
1 files changed, 25 insertions, 2 deletions
diff --git a/lib/api/rpm_project_packages.rb b/lib/api/rpm_project_packages.rb
index d17470ae92d..40b8d022c6c 100644
--- a/lib/api/rpm_project_packages.rb
+++ b/lib/api/rpm_project_packages.rb
@@ -21,7 +21,7 @@ module API
end
params do
- requires :id, type: String, desc: 'The ID of a project'
+ requires :id, types: [String, Integer], desc: 'The ID or URL-encoded path of the project'
end
resource :projects, requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do
namespace ':id/packages/rpm' do
@@ -30,7 +30,14 @@ module API
requires :file_name, type: String, desc: 'Repository metadata file name'
end
get 'repodata/*file_name', requirements: { file_name: API::NO_SLASH_URL_PART_REGEX } do
- not_found!
+ authorize_read_package!(authorized_user_project)
+
+ repository_file = Packages::Rpm::RepositoryFile.find_by_project_id_and_file_name!(
+ authorized_user_project.id,
+ "#{params['file_name']}.#{params['format']}"
+ )
+
+ present_carrierwave_file!(repository_file.file)
end
desc 'Download RPM package files'
@@ -39,6 +46,13 @@ module API
requires :file_name, type: String, desc: 'RPM package file name'
end
get '*package_file_id/*file_name', requirements: { file_name: API::NO_SLASH_URL_PART_REGEX } do
+ track_package_event(
+ 'pull_package',
+ :rpm,
+ category: self.class.name,
+ project: authorized_user_project,
+ namespace: authorized_user_project.namespace
+ )
not_found!
end
@@ -50,6 +64,15 @@ module API
bad_request!('File is too large')
end
+ track_package_event(
+ 'push_package',
+ :rpm,
+ user: current_user,
+ category: self.class.name,
+ project: authorized_user_project,
+ namespace: authorized_user_project.namespace
+ )
+
not_found!
end