diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-05-28 03:08:37 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-05-28 03:08:37 +0300 |
commit | 6985123d928aa3b5061f5ed19208407b550ab4e8 (patch) | |
tree | e990ca2c3c578d06fdcb9c4ae87084e8f68f310b /lib/gitlab/gl_repository.rb | |
parent | 47579e24f3f9f29d5b8093f54e6958fefd7f2057 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/gl_repository.rb')
-rw-r--r-- | lib/gitlab/gl_repository.rb | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/lib/gitlab/gl_repository.rb b/lib/gitlab/gl_repository.rb index b75b4be9a4e..8abefad1ef3 100644 --- a/lib/gitlab/gl_repository.rb +++ b/lib/gitlab/gl_repository.rb @@ -12,15 +12,14 @@ module Gitlab WIKI = RepoType.new( name: :wiki, access_checker_class: Gitlab::GitAccessWiki, - repository_resolver: -> (container) { container&.wiki&.repository }, - project_resolver: -> (container) { container.is_a?(Project) ? container : nil }, + repository_resolver: -> (project) { project&.wiki&.repository }, suffix: :wiki ).freeze SNIPPET = RepoType.new( name: :snippet, access_checker_class: Gitlab::GitAccessSnippet, repository_resolver: -> (snippet) { snippet&.repository }, - container_class: Snippet, + container_resolver: -> (id) { Snippet.find_by_id(id) }, project_resolver: -> (snippet) { snippet&.project }, guest_read_ability: :read_snippet ).freeze @@ -43,12 +42,16 @@ module Gitlab end def self.parse(gl_repository) - result = ::Gitlab::GlRepository::Identifier.new(gl_repository) + type_name, _id = gl_repository.split('-').first + type = types[type_name] - repo_type = result.repo_type - container = result.fetch_container! + unless type + raise ArgumentError, "Invalid GL Repository \"#{gl_repository}\"" + end - [container, repo_type.project_for(container), repo_type] + container = type.fetch_container!(gl_repository) + + [container, type.project_for(container), type] end def self.default_type |