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:
authorBrett Walker <bwalker@gitlab.com>2018-12-28 21:53:39 +0300
committerBrett Walker <bwalker@gitlab.com>2019-01-03 23:37:35 +0300
commita4f2de796411236bfda81b7fa281cfa8199c5acf (patch)
treed1af8211ccae7ea525ca01f06c4993d4710c2771 /lib/gitlab/email/handler/create_merge_request_handler.rb
parent54eb6260e75690ec45802618a7e1b9807f0e7e08 (diff)
Refactoring and review comments
including verifying the project_slug
Diffstat (limited to 'lib/gitlab/email/handler/create_merge_request_handler.rb')
-rw-r--r--lib/gitlab/email/handler/create_merge_request_handler.rb21
1 files changed, 7 insertions, 14 deletions
diff --git a/lib/gitlab/email/handler/create_merge_request_handler.rb b/lib/gitlab/email/handler/create_merge_request_handler.rb
index d065da70931..21bb09fa4a1 100644
--- a/lib/gitlab/email/handler/create_merge_request_handler.rb
+++ b/lib/gitlab/email/handler/create_merge_request_handler.rb
@@ -12,16 +12,19 @@ module Gitlab
class CreateMergeRequestHandler < BaseHandler
include ReplyProcessing
- HANDLER_REGEX = /\A.+-(?<project_id>.+)-(?<incoming_email_token>.+)-merge-request\z/.freeze
+ HANDLER_REGEX = /\A#{HANDLER_ACTION_BASE_REGEX}-merge-request\z/.freeze
HANDLER_REGEX_LEGACY = /\A(?<project_path>[^\+]*)\+merge-request\+(?<incoming_email_token>.*)/.freeze
def initialize(mail, mail_key)
super(mail, mail_key)
- if matched = HANDLER_REGEX.match(mail_key.to_s)
- @project_id, @incoming_email_token = matched.captures
+ if !mail_key&.include?('/') && (matched = HANDLER_REGEX.match(mail_key.to_s))
+ @project_slug = matched[:project_slug]
+ @project_id = matched[:project_id]&.to_i
+ @incoming_email_token = matched[:incoming_email_token]
elsif matched = HANDLER_REGEX_LEGACY.match(mail_key.to_s)
- @project_path, @incoming_email_token = matched.captures
+ @project_path = matched[:project_path]
+ @incoming_email_token = matched[:incoming_email_token]
end
end
@@ -47,22 +50,12 @@ module Gitlab
end
# rubocop: enable CodeReuse/ActiveRecord
- def project
- @project ||= if project_id
- Project.find_by_id(project_id)
- else
- Project.find_by_full_path(project_path)
- end
- end
-
def metrics_params
super.merge(includes_patches: patch_attachments.any?)
end
private
- attr_reader :project_id, :project_path, :incoming_email_token
-
def build_merge_request
MergeRequests::BuildService.new(project, author, merge_request_params).execute
end