Class: Mandrill::WebHook::EventDecorator
- Inherits:
-
Hash
- Object
- Hash
- Mandrill::WebHook::EventDecorator
- Defined in:
- lib/mandrill/web_hook/event_decorator.rb
Overview
Wraps an individual Mandrill web hook event payload, providing some convenience methods handling the payload.
Given a raw event payload Hash, wrap it thus:
JSON.parse(params['mandrill_events']).each do |raw_event|
event = Mandrill::WebHook::EventDecorator[raw_event]
..
end
Instance Method Summary collapse
-
#all_clicked_links ⇒ Object
Returns an array of all the urls marked as clicked in this message.
-
#all_clicks ⇒ Object
Returns an array of all the clicks.
-
#attachments ⇒ Object
Returns an array of Mandrill::WebHook::Attachment objects describing each attached file [ attachment, attachment, .. ] Applicable events: inbound.
-
#click ⇒ Object
Returns the primary click payload or nil if n/a.
-
#event_type ⇒ Object
Returns the event type.
-
#headers ⇒ Object
Returns the headers Hash.
-
#in_reply_to ⇒ Object
Returns the reply-to ID.
-
#message_body(format = :text) ⇒ Object
Returns the
format
(:text,:html,:raw) message body. -
#message_id ⇒ Object
Returns the message_id.
-
#message_version ⇒ Object
Returns the Mandrill message version.
-
#msg ⇒ Object
Returns the msg Hash.
-
#recipient_emails ⇒ Object
Returns an array of all unique recipient emails (to/cc) [ email, email, .. ] Applicable events: inbound.
-
#recipients ⇒ Object
Returns an array of all unique recipients (to/cc) [ [email,name], [email,name], .. ] Applicable events: inbound.
-
#references ⇒ Object
Returns an array of reference IDs.
-
#sender_email ⇒ Object
Returns the email (String) of the sender.
-
#subject ⇒ Object
Returns the message subject.
-
#user_email ⇒ Object
Returns the subject user email address.
Instance Method Details
#all_clicked_links ⇒ Object
Returns an array of all the urls marked as clicked in this message. Applicable events: click, open
129 130 131 |
# File 'lib/mandrill/web_hook/event_decorator.rb', line 129 def all_clicked_links all_clicks.collect{|c| c['url'] }.uniq end |
#all_clicks ⇒ Object
Returns an array of all the clicks. Applicable events: click, open
121 122 123 124 125 |
# File 'lib/mandrill/web_hook/event_decorator.rb', line 121 def all_clicks clicks = msg['clicks'] || [] clicks << click if click and clicks.empty? clicks end |
#attachments ⇒ Object
Returns an array of Mandrill::WebHook::Attachment objects describing each attached file
[ attachment, attachment, .. ]
Applicable events: inbound
NB: we are throwing away the Mandrill attachments hash keynames at this point, since in practice they are usually the same as the filename. Does this matter? May need to review if other cases are identified.
96 97 98 |
# File 'lib/mandrill/web_hook/event_decorator.rb', line 96 def (msg['attachments']||{}).map{|attached| Mandrill::WebHook::Attachment[attached.last] } end |
#click ⇒ Object
Returns the primary click payload or nil if n/a. Applicable events: click, open
115 116 117 |
# File 'lib/mandrill/web_hook/event_decorator.rb', line 115 def click { 'ts' => self['ts'], 'url' => self['url'] } if self['ts'] && self['url'] end |
#event_type ⇒ Object
Returns the event type. Applicable events: all
15 16 17 |
# File 'lib/mandrill/web_hook/event_decorator.rb', line 15 def event_type self['event'] end |
#headers ⇒ Object
Returns the headers Hash. Applicable events: inbound
59 60 61 |
# File 'lib/mandrill/web_hook/event_decorator.rb', line 59 def headers msg['headers']||{} end |
#in_reply_to ⇒ Object
Returns the reply-to ID. Applicable events: inbound
47 48 49 |
# File 'lib/mandrill/web_hook/event_decorator.rb', line 47 def in_reply_to headers['In-Reply-To'] end |
#message_body(format = :text) ⇒ Object
Returns the format
(:text,:html,:raw) message body. Applicable events: inbound
102 103 104 105 106 107 108 109 110 111 |
# File 'lib/mandrill/web_hook/event_decorator.rb', line 102 def (format=:text) case format when :text msg['text'] when :html msg['html'] when :raw msg['raw_msg'] end end |
#message_id ⇒ Object
Returns the message_id. Inbound events: references ‘Message-Id’ header. Send/Open/Click events: references ‘_id’ message attribute.
34 35 36 |
# File 'lib/mandrill/web_hook/event_decorator.rb', line 34 def headers['Message-Id'] || msg['_id'] end |
#message_version ⇒ Object
Returns the Mandrill message version. Send/Click events: references ‘_version’ message attribute. Inbound/Open events: n/a.
41 42 43 |
# File 'lib/mandrill/web_hook/event_decorator.rb', line 41 def msg['_version'] end |
#msg ⇒ Object
Returns the msg Hash. Applicable events: all
27 28 29 |
# File 'lib/mandrill/web_hook/event_decorator.rb', line 27 def msg self['msg']||{} end |
#recipient_emails ⇒ Object
Returns an array of all unique recipient emails (to/cc)
[ email, email, .. ]
Applicable events: inbound
86 87 88 |
# File 'lib/mandrill/web_hook/event_decorator.rb', line 86 def recipient_emails recipients.map(&:first) end |
#recipients ⇒ Object
Returns an array of all unique recipients (to/cc)
[ [email,name], [email,name], .. ]
Applicable events: inbound
79 80 81 |
# File 'lib/mandrill/web_hook/event_decorator.rb', line 79 def recipients (Array(msg['to']) | Array(msg['cc'])).compact end |
#references ⇒ Object
Returns an array of reference IDs. Applicable events: inbound
53 54 55 |
# File 'lib/mandrill/web_hook/event_decorator.rb', line 53 def references (headers['References']||'').scan(/(<[^<]+?>)/).flatten end |
#sender_email ⇒ Object
Returns the email (String) of the sender. Applicable events: inbound
65 66 67 |
# File 'lib/mandrill/web_hook/event_decorator.rb', line 65 def sender_email msg['from_email'] end |
#subject ⇒ Object
Returns the message subject. Applicable events: all
21 22 23 |
# File 'lib/mandrill/web_hook/event_decorator.rb', line 21 def subject self['subject'] || msg['subject'] end |
#user_email ⇒ Object
Returns the subject user email address. Inbound messages: references ‘email’ message attribute (represents the sender). Send/Open/Click messages: references ‘email’ message attribute (represents the recipient).
72 73 74 |
# File 'lib/mandrill/web_hook/event_decorator.rb', line 72 def user_email msg['email'] end |