summaryrefslogtreecommitdiff
path: root/app/finders/packages
diff options
context:
space:
mode:
Diffstat (limited to 'app/finders/packages')
-rw-r--r--app/finders/packages/group_or_project_package_finder.rb12
-rw-r--r--app/finders/packages/helm/package_files_finder.rb26
-rw-r--r--app/finders/packages/pypi/package_finder.rb10
3 files changed, 46 insertions, 2 deletions
diff --git a/app/finders/packages/group_or_project_package_finder.rb b/app/finders/packages/group_or_project_package_finder.rb
index fb8bcfc7d42..5b5f70bf459 100644
--- a/app/finders/packages/group_or_project_package_finder.rb
+++ b/app/finders/packages/group_or_project_package_finder.rb
@@ -26,9 +26,9 @@ module Packages
def base
if project?
- packages_for_project(@project_or_group)
+ project_packages
elsif group?
- packages_visible_to_user(@current_user, within_group: @project_or_group)
+ group_packages
else
::Packages::Package.none
end
@@ -41,5 +41,13 @@ module Packages
def group?
@project_or_group.is_a?(::Group)
end
+
+ def project_packages
+ packages_for_project(@project_or_group)
+ end
+
+ def group_packages
+ packages_visible_to_user(@current_user, within_group: @project_or_group)
+ end
end
end
diff --git a/app/finders/packages/helm/package_files_finder.rb b/app/finders/packages/helm/package_files_finder.rb
new file mode 100644
index 00000000000..74f9eaaca82
--- /dev/null
+++ b/app/finders/packages/helm/package_files_finder.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+module Packages
+ module Helm
+ class PackageFilesFinder
+ def initialize(project, channel, params = {})
+ @project = project
+ @channel = channel
+ @params = params
+ end
+
+ def execute
+ package_files = Packages::PackageFile.for_helm_with_channel(@project, @channel).preload_helm_file_metadata
+ by_file_name(package_files)
+ end
+
+ private
+
+ def by_file_name(files)
+ return files unless @params[:file_name]
+
+ files.with_file_name(@params[:file_name])
+ end
+ end
+ end
+end
diff --git a/app/finders/packages/pypi/package_finder.rb b/app/finders/packages/pypi/package_finder.rb
index 574e9770363..3a37e404b79 100644
--- a/app/finders/packages/pypi/package_finder.rb
+++ b/app/finders/packages/pypi/package_finder.rb
@@ -12,6 +12,16 @@ module Packages
def packages
base.pypi.has_version
end
+
+ def group_packages
+ # PyPI finds packages without checking permissions.
+ # The package download endpoint uses obfuscation to secure the file
+ # instead of authentication. This is behavior the PyPI package
+ # manager defines and is not something GitLab controls.
+ ::Packages::Package.for_projects(
+ @project_or_group.all_projects.select(:id)
+ ).installable
+ end
end
end
end