summaryrefslogtreecommitdiff
path: root/lib/gitlab/incoming_email.rb
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2015-09-21 09:46:47 +0200
committerDouwe Maan <douwe@gitlab.com>2015-09-21 10:35:37 +0200
commitee028d9d60522f8993a0b2429ac8a0631d59229a (patch)
tree5e028593ff4394df287de8f61824c8d004a81688 /lib/gitlab/incoming_email.rb
parent11bbc06b4bbcb678f3ee6b8f1d143ed86d25a76c (diff)
downloadgitlab-ce-ee028d9d60522f8993a0b2429ac8a0631d59229a.tar.gz
Rename reply_by_email to incoming_email to prepare for the future.
Diffstat (limited to 'lib/gitlab/incoming_email.rb')
-rw-r--r--lib/gitlab/incoming_email.rb43
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/gitlab/incoming_email.rb b/lib/gitlab/incoming_email.rb
new file mode 100644
index 00000000000..856ccc71084
--- /dev/null
+++ b/lib/gitlab/incoming_email.rb
@@ -0,0 +1,43 @@
+module Gitlab
+ module IncomingEmail
+ class << self
+ def enabled?
+ config.enabled && address_formatted_correctly?
+ end
+
+ def address_formatted_correctly?
+ config.address &&
+ config.address.include?("%{key}")
+ end
+
+ def reply_address(key)
+ config.address.gsub('%{key}', key)
+ end
+
+ def key_from_address(address)
+ regex = address_regex
+ return unless regex
+
+ match = address.match(regex)
+ return unless match
+
+ match[1]
+ end
+
+ private
+
+ def config
+ Gitlab.config.incoming_email
+ end
+
+ def address_regex
+ wildcard_address = config.address
+ return nil unless wildcard_address
+
+ regex = Regexp.escape(wildcard_address)
+ regex = regex.gsub(Regexp.escape('%{key}'), "(.+)")
+ Regexp.new(regex).freeze
+ end
+ end
+ end
+end