diff options
author | Duana Saskia <starkcoffee@users.noreply.github.com> | 2018-07-25 13:01:10 +0200 |
---|---|---|
committer | Duana Saskia <starkcoffee@users.noreply.github.com> | 2018-08-13 13:36:22 +0200 |
commit | c322976032e45f02b60701ebf244a8a876063078 (patch) | |
tree | b5e959931ee397e368b679fb5c0f16976141a619 /app/models/hooks | |
parent | ece6a1ea6ecffdbde5ff7d663f1ad1eb74f78aa6 (diff) | |
download | gitlab-ce-c322976032e45f02b60701ebf244a8a876063078.tar.gz |
Refactor ProtectedRefMatcher to be more generic
Diffstat (limited to 'app/models/hooks')
-rw-r--r-- | app/models/hooks/active_hook_filter.rb | 28 |
1 files changed, 2 insertions, 26 deletions
diff --git a/app/models/hooks/active_hook_filter.rb b/app/models/hooks/active_hook_filter.rb index 611af971163..ea046bea368 100644 --- a/app/models/hooks/active_hook_filter.rb +++ b/app/models/hooks/active_hook_filter.rb @@ -1,6 +1,7 @@ class ActiveHookFilter def initialize(hook) @hook = hook + @push_events_filter_matcher = RefMatcher.new(@hook.push_events_branch_filter) end def matches?(hooks_scope, data) @@ -8,31 +9,6 @@ class ActiveHookFilter return true if @hook.push_events_branch_filter.blank? branch_name = Gitlab::Git.branch_name(data[:ref]) - exact_match?(branch_name) || wildcard_match?(branch_name) - end - - private - - def exact_match?(branch_name) - @hook.push_events_branch_filter == branch_name - end - - def wildcard_match?(branch_name) - return false unless wildcard? - - wildcard_regex === branch_name - end - - def wildcard_regex - @wildcard_regex ||= begin - name = @hook.push_events_branch_filter.gsub('*', 'STAR_DONT_ESCAPE') - quoted_name = Regexp.quote(name) - regex_string = quoted_name.gsub('STAR_DONT_ESCAPE', '.*?') - /\A#{regex_string}\z/ - end - end - - def wildcard? - @hook.push_events_branch_filter && @hook.push_events_branch_filter.include?('*') + @push_events_filter_matcher.matches?(branch_name) end end |