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:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-04-06 18:08:20 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-04-06 18:08:20 +0300
commit78782cd1eb5273265668ca3e438bb8cbb1344004 (patch)
tree63e9715611d41a0c9dac52aca6613c1fc2af7b58 /lib/gitlab/email
parentb161512b300e70c1e786dd299867dad284e11019 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/email')
-rw-r--r--lib/gitlab/email/incoming_email.rb36
-rw-r--r--lib/gitlab/email/receiver.rb4
-rw-r--r--lib/gitlab/email/service_desk_email.rb28
-rw-r--r--lib/gitlab/email/service_desk_receiver.rb2
4 files changed, 67 insertions, 3 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
diff --git a/lib/gitlab/email/receiver.rb b/lib/gitlab/email/receiver.rb
index 664f0a1bb4a..51d250ea98c 100644
--- a/lib/gitlab/email/receiver.rb
+++ b/lib/gitlab/email/receiver.rb
@@ -110,7 +110,7 @@ module Gitlab
when String
# Handle emails from clients which append with commas,
# example clients are Microsoft exchange and iOS app
- Gitlab::IncomingEmail.scan_fallback_references(references)
+ email_class.scan_fallback_references(references)
when nil
[]
end
@@ -203,7 +203,7 @@ module Gitlab
end
def email_class
- Gitlab::IncomingEmail
+ Gitlab::Email::IncomingEmail
end
end
end
diff --git a/lib/gitlab/email/service_desk_email.rb b/lib/gitlab/email/service_desk_email.rb
new file mode 100644
index 00000000000..4ea1c077327
--- /dev/null
+++ b/lib/gitlab/email/service_desk_email.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Email
+ module ServiceDeskEmail
+ class << self
+ include Gitlab::Email::Common
+
+ def config
+ Gitlab.config.service_desk_email
+ end
+
+ def key_from_address(address)
+ wildcard_address = config&.address
+ return unless wildcard_address
+
+ Gitlab::Email::IncomingEmail.key_from_address(address, wildcard_address: wildcard_address)
+ end
+
+ def address_for_key(key)
+ return if config.address.blank?
+
+ config.address.sub(WILDCARD_PLACEHOLDER, key)
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/email/service_desk_receiver.rb b/lib/gitlab/email/service_desk_receiver.rb
index 6c6eb3b0a65..e286cf1f68c 100644
--- a/lib/gitlab/email/service_desk_receiver.rb
+++ b/lib/gitlab/email/service_desk_receiver.rb
@@ -12,7 +12,7 @@ module Gitlab
end
def email_class
- ::Gitlab::ServiceDeskEmail
+ ::Gitlab::Email::ServiceDeskEmail
end
end
end