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
- #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
58 59 60 |
# File 'lib/gitlab/email/common.rb', line 58 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
43 44 45 |
# File 'lib/gitlab/email/common.rb', line 43 def key_from_address(address, wildcard_address: nil) raise NotImplementedError end |
#key_from_fallback_message_id(mail_id) ⇒ Object
47 48 49 50 51 |
# File 'lib/gitlab/email/common.rb', line 47 def (mail_id) = /\Areply-(.+)@#{Gitlab.config.gitlab.host}\z/ mail_id[, 1] end |
#reply_address(key) ⇒ Object
34 35 36 |
# File 'lib/gitlab/email/common.rb', line 34 def reply_address(key) incoming_email_config.address.sub(WILDCARD_PLACEHOLDER, key) end |
#scan_fallback_references(references) ⇒ Object
53 54 55 56 |
# File 'lib/gitlab/email/common.rb', line 53 def scan_fallback_references(references) # It's looking for each <...> references.scan(/(?!<)[^<>]+(?=>)/) end |
#supports_issue_creation? ⇒ Boolean
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
39 40 41 |
# File 'lib/gitlab/email/common.rb', line 39 def unsubscribe_address(key) incoming_email_config.address.sub(WILDCARD_PLACEHOLDER, "#{key}#{UNSUBSCRIBE_SUFFIX}") end |