Class: MailDude::MessagePresenter
- Inherits:
-
Object
- Object
- MailDude::MessagePresenter
- Defined in:
- lib/mail_dude/message_presenter.rb
Constant Summary collapse
- FALLBACK_DECODE_ERROR =
'Unable to decode this message part.'
Instance Attribute Summary collapse
-
#record ⇒ Object
readonly
Returns the value of attribute record.
Instance Method Summary collapse
- #attachment_count_label ⇒ Object
- #attachments ⇒ Object
- #bcc ⇒ Object
- #captured_at ⇒ Object
- #captured_at_label ⇒ Object
- #cc ⇒ Object
- #content_type ⇒ Object
- #from ⇒ Object
- #has_attachments? ⇒ Boolean
- #html_body ⇒ Object
-
#initialize(record) ⇒ MessagePresenter
constructor
A new instance of MessagePresenter.
- #list_preview ⇒ Object
- #mail ⇒ Object
- #mailer ⇒ Object
- #mailer_action ⇒ Object
- #mailer_label ⇒ Object
- #message_id ⇒ Object
- #raw_headers ⇒ Object
- #raw_source ⇒ Object
- #recipient_summary ⇒ Object
- #reply_to ⇒ Object
- #sender ⇒ Object
- #sender_summary ⇒ Object
- #size_bytes ⇒ Object
- #size_label ⇒ Object
- #subject ⇒ Object
- #subject_label ⇒ Object
- #text_body ⇒ Object
- #to ⇒ Object
Constructor Details
#initialize(record) ⇒ MessagePresenter
Returns a new instance of MessagePresenter.
11 12 13 |
# File 'lib/mail_dude/message_presenter.rb', line 11 def initialize(record) @record = record end |
Instance Attribute Details
#record ⇒ Object (readonly)
Returns the value of attribute record.
7 8 9 |
# File 'lib/mail_dude/message_presenter.rb', line 7 def record @record end |
Instance Method Details
#attachment_count_label ⇒ Object
87 88 89 90 |
# File 'lib/mail_dude/message_presenter.rb', line 87 def count = .length "#{count} #{'attachment'.pluralize(count)}" end |
#attachments ⇒ Object
45 |
# File 'lib/mail_dude/message_presenter.rb', line 45 def = ('attachments') |
#bcc ⇒ Object
37 |
# File 'lib/mail_dude/message_presenter.rb', line 37 def bcc = ('bcc') |
#captured_at ⇒ Object
23 24 25 26 27 |
# File 'lib/mail_dude/message_presenter.rb', line 23 def captured_at Time.iso8601(('captured_at').to_s) rescue ArgumentError, TypeError nil end |
#captured_at_label ⇒ Object
29 30 31 |
# File 'lib/mail_dude/message_presenter.rb', line 29 def captured_at_label captured_at ? captured_at.strftime('%Y-%m-%d %H:%M:%S UTC') : '(unknown time)' end |
#cc ⇒ Object
36 |
# File 'lib/mail_dude/message_presenter.rb', line 36 def cc = ('cc') |
#content_type ⇒ Object
42 |
# File 'lib/mail_dude/message_presenter.rb', line 42 def content_type = ('content_type') |
#from ⇒ Object
33 |
# File 'lib/mail_dude/message_presenter.rb', line 33 def from = ('from') |
#has_attachments? ⇒ Boolean
83 84 85 |
# File 'lib/mail_dude/message_presenter.rb', line 83 def .any? end |
#html_body ⇒ Object
69 70 71 |
# File 'lib/mail_dude/message_presenter.rb', line 69 def html_body decoded_body_for('text/html') end |
#list_preview ⇒ Object
100 101 102 103 |
# File 'lib/mail_dude/message_presenter.rb', line 100 def list_preview preview = text_body.presence || ActionView::Base.full_sanitizer.sanitize(html_body.to_s) preview.to_s.squish.truncate(140) end |
#mail ⇒ Object
63 64 65 66 67 |
# File 'lib/mail_dude/message_presenter.rb', line 63 def mail @mail ||= raw_source.present? ? Mail.read_from_string(raw_source) : nil rescue StandardError nil end |
#mailer ⇒ Object
40 |
# File 'lib/mail_dude/message_presenter.rb', line 40 def mailer = ('mailer') |
#mailer_action ⇒ Object
41 |
# File 'lib/mail_dude/message_presenter.rb', line 41 def mailer_action = ('mailer_action') |
#mailer_label ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/mail_dude/message_presenter.rb', line 47 def mailer_label return '(unknown mailer)' if mailer.blank? && mailer_action.blank? return mailer if mailer_action.blank? return "##{mailer_action}" if mailer.blank? "#{mailer}##{mailer_action}" end |
#message_id ⇒ Object
39 |
# File 'lib/mail_dude/message_presenter.rb', line 39 def = ('message_id') |
#raw_headers ⇒ Object
77 78 79 80 81 |
# File 'lib/mail_dude/message_presenter.rb', line 77 def raw_headers return '' if raw_source.blank? raw_source.split(/\r?\n\r?\n/, 2).first.to_s end |
#raw_source ⇒ Object
44 |
# File 'lib/mail_dude/message_presenter.rb', line 44 def raw_source = record.raw_source.to_s |
#recipient_summary ⇒ Object
92 93 94 |
# File 'lib/mail_dude/message_presenter.rb', line 92 def recipient_summary to.first.presence || cc.first.presence || bcc.first.presence || '(no recipients)' end |
#reply_to ⇒ Object
38 |
# File 'lib/mail_dude/message_presenter.rb', line 38 def reply_to = ('reply_to') |
#sender ⇒ Object
34 |
# File 'lib/mail_dude/message_presenter.rb', line 34 def sender = ('sender') |
#sender_summary ⇒ Object
96 97 98 |
# File 'lib/mail_dude/message_presenter.rb', line 96 def sender_summary from.first.presence || sender.first.presence || '(unknown sender)' end |
#size_bytes ⇒ Object
43 |
# File 'lib/mail_dude/message_presenter.rb', line 43 def size_bytes = ('size_bytes').to_i |
#size_label ⇒ Object
55 56 57 58 59 60 61 |
# File 'lib/mail_dude/message_presenter.rb', line 55 def size_label bytes = size_bytes return "#{bytes} B" if bytes < 1.kilobyte return "#{format('%.1f', bytes / 1.kilobyte.to_f)} KB" if bytes < 1.megabyte "#{format('%.1f', bytes / 1.megabyte.to_f)} MB" end |
#subject ⇒ Object
15 16 17 |
# File 'lib/mail_dude/message_presenter.rb', line 15 def subject ('subject').to_s end |
#subject_label ⇒ Object
19 20 21 |
# File 'lib/mail_dude/message_presenter.rb', line 19 def subject_label subject.strip.presence || '(no subject)' end |
#text_body ⇒ Object
73 74 75 |
# File 'lib/mail_dude/message_presenter.rb', line 73 def text_body decoded_body_for('text/plain') end |
#to ⇒ Object
35 |
# File 'lib/mail_dude/message_presenter.rb', line 35 def to = ('to') |