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/helpers/packages/npm.rb')
-rw-r--r--lib/api/helpers/packages/npm.rb32
1 files changed, 28 insertions, 4 deletions
diff --git a/lib/api/helpers/packages/npm.rb b/lib/api/helpers/packages/npm.rb
index 352d77f472c..4eb6c39b7dc 100644
--- a/lib/api/helpers/packages/npm.rb
+++ b/lib/api/helpers/packages/npm.rb
@@ -33,6 +33,15 @@ module API
end
end
+ def finder_for_endpoint_scope(package_name)
+ case endpoint_scope
+ when :project
+ ::Packages::Npm::PackageFinder.new(package_name, project: project_or_nil)
+ when :instance
+ ::Packages::Npm::PackageFinder.new(package_name, namespace: top_namespace_from(package_name))
+ end
+ end
+
def project_or_nil
# mainly used by the metadata endpoint where we need to get a project
# and return nil if not found (no errors should be raised)
@@ -50,11 +59,17 @@ module API
params[:id]
when :instance
package_name = params[:package_name]
- namespace_path = ::Packages::Npm.scope_of(package_name)
- next unless namespace_path
- namespace = Namespace.top_most
- .by_path(namespace_path)
+ namespace =
+ if Feature.enabled?(:npm_allow_packages_in_multiple_projects)
+ top_namespace_from(package_name)
+ else
+ namespace_path = ::Packages::Npm.scope_of(package_name)
+ next unless namespace_path
+
+ Namespace.top_most.by_path(namespace_path)
+ end
+
next unless namespace
finder = ::Packages::Npm::PackageFinder.new(
@@ -67,6 +82,15 @@ module API
end
end
end
+
+ private
+
+ def top_namespace_from(package_name)
+ namespace_path = ::Packages::Npm.scope_of(package_name)
+ return unless namespace_path
+
+ Namespace.top_most.by_path(namespace_path)
+ end
end
end
end