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/gitlab/email/incoming_email.rb')
-rw-r--r--lib/gitlab/email/incoming_email.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/gitlab/email/incoming_email.rb b/lib/gitlab/email/incoming_email.rb
new file mode 100644
index 00000000000..a0a01ae0d70
--- /dev/null
+++ b/lib/gitlab/email/incoming_email.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Email
+ module IncomingEmail
+ class << self
+ include Gitlab::Email::Common
+
+ def config
+ incoming_email_config
+ end
+
+ def key_from_address(address, wildcard_address: nil)
+ wildcard_address ||= config.address
+ regex = address_regex(wildcard_address)
+ return unless regex
+
+ match = address.match(regex)
+ return unless match
+
+ match[1]
+ end
+
+ private
+
+ def address_regex(wildcard_address)
+ return unless wildcard_address
+
+ regex = Regexp.escape(wildcard_address)
+ regex = regex.sub(Regexp.escape(WILDCARD_PLACEHOLDER), '(.+)')
+ Regexp.new(/\A<?#{regex}>?\z/).freeze
+ end
+ end
+ end
+ end
+end