Skip to content
Snippets Groups Projects

Add routes to allow git actions on snippet repositories

All threads resolved!
2 files
+ 26
16
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -6,13 +6,21 @@ class RepoType
@@ -6,13 +6,21 @@ class RepoType
attr_reader :name,
attr_reader :name,
:access_checker_class,
:access_checker_class,
:repository_accessor,
:repository_accessor,
 
:repositorable_accessor,
:project_accessor,
:project_accessor,
:suffix
:suffix
def initialize(name:, access_checker_class:, repository_accessor:, project_accessor: nil, suffix: nil)
def initialize(
 
name:,
 
access_checker_class:,
 
repository_accessor:,
 
repositorable_accessor: default_repositorable_accessor,
 
project_accessor: nil,
 
suffix: nil)
@name = name
@name = name
@access_checker_class = access_checker_class
@access_checker_class = access_checker_class
@repository_accessor = repository_accessor
@repository_accessor = repository_accessor
 
@repositorable_accessor = repositorable_accessor
@project_accessor = project_accessor
@project_accessor = project_accessor
@suffix = suffix
@suffix = suffix
end
end
@@ -26,6 +34,14 @@ def fetch_id(identifier)
@@ -26,6 +34,14 @@ def fetch_id(identifier)
match[:id] if match
match[:id] if match
end
end
 
def fetch_repositorable!(identifier)
 
id = fetch_id(identifier)
 
 
raise ArgumentError, "Invalid GL Repository \"#{identifier}\"" unless id
 
 
repositorable_accessor.call(id)
 
end
 
def wiki?
def wiki?
self == WIKI
self == WIKI
end
end
@@ -59,6 +75,12 @@ def valid?(repository_path)
@@ -59,6 +75,12 @@ def valid?(repository_path)
repository_path.match?(Gitlab::PathRegex.full_snippets_repository_path_regex)
repository_path.match?(Gitlab::PathRegex.full_snippets_repository_path_regex)
)
)
end
end
 
 
private
 
 
def default_repositorable_accessor
 
-> (id) { Project.find_by_id(id) }
 
end
end
end
end
end
end
end
Loading