Module: Gitlab::Email::Common
- Included in:
- IncomingEmail, ServiceDeskEmail
- Defined in:
- lib/gitlab/email/common.rb
Overview
Contains common methods which must be present in all email classes
Constant Summary collapse
- UNSUBSCRIBE_SUFFIX =
'-unsubscribe'- UNSUBSCRIBE_SUFFIX_LEGACY =
'+unsubscribe'- WILDCARD_PLACEHOLDER =
'%{key}'
Instance Method Summary collapse
-
#config ⇒ Object
This can be overridden for a custom config.
- #enabled? ⇒ Boolean
- #encrypted_secrets ⇒ Object
- #incoming_email_config ⇒ Object
- #key_from_address(address, wildcard_address: nil) ⇒ Object
- #key_from_fallback_message_id(mail_id) ⇒ Object
- #reply_address(key) ⇒ Object
- #scan_fallback_references(references) ⇒ Object
- #supports_issue_creation? ⇒ Boolean (also: #supports_work_item_creation?)
- #supports_wildcard? ⇒ Boolean
-
#unsubscribe_address(key) ⇒ Object
example: incoming+1234567890abcdef1234567890abcdef-unsubscribe@incoming.gitlab.com.
Instance Method Details
#config ⇒ Object
This can be overridden for a custom config
12 13 14 |
# File 'lib/gitlab/email/common.rb', line 12 def config raise NotImplementedError end |
#enabled? ⇒ Boolean
20 21 22 |
# File 'lib/gitlab/email/common.rb', line 20 def enabled? !!config&.enabled && config.address.present? end |
#encrypted_secrets ⇒ Object
60 61 62 |
# File 'lib/gitlab/email/common.rb', line 60 def encrypted_secrets Settings.encrypted(config.encrypted_secret_file) end |
#incoming_email_config ⇒ Object
16 17 18 |
# File 'lib/gitlab/email/common.rb', line 16 def incoming_email_config Gitlab.config.incoming_email end |
#key_from_address(address, wildcard_address: nil) ⇒ Object
45 46 47 |
# File 'lib/gitlab/email/common.rb', line 45 def key_from_address(address, wildcard_address: nil) raise NotImplementedError end |
#key_from_fallback_message_id(mail_id) ⇒ Object
49 50 51 52 53 |
# File 'lib/gitlab/email/common.rb', line 49 def (mail_id) = /\Areply-(.+)@#{Gitlab.config.gitlab.host}\z/ mail_id[, 1] end |
#reply_address(key) ⇒ Object
36 37 38 |
# File 'lib/gitlab/email/common.rb', line 36 def reply_address(key) incoming_email_config.address.sub(WILDCARD_PLACEHOLDER, key) end |
#scan_fallback_references(references) ⇒ Object
55 56 57 58 |
# File 'lib/gitlab/email/common.rb', line 55 def scan_fallback_references(references) # It's looking for each <...> references.scan(/(?!<)[^<>]+(?=>)/) end |
#supports_issue_creation? ⇒ Boolean Also known as: supports_work_item_creation?
30 31 32 |
# File 'lib/gitlab/email/common.rb', line 30 def supports_issue_creation? enabled? && supports_wildcard? end |
#supports_wildcard? ⇒ Boolean
24 25 26 27 28 |
# File 'lib/gitlab/email/common.rb', line 24 def supports_wildcard? config_address = incoming_email_config.address config_address.present? && config_address.include?(WILDCARD_PLACEHOLDER) end |
#unsubscribe_address(key) ⇒ Object
example: incoming+1234567890abcdef1234567890abcdef-unsubscribe@incoming.gitlab.com
41 42 43 |
# File 'lib/gitlab/email/common.rb', line 41 def unsubscribe_address(key) incoming_email_config.address.sub(WILDCARD_PLACEHOLDER, "#{key}#{UNSUBSCRIBE_SUFFIX}") end |