class KlaviyoRails::DeliveryMethod
Attributes
settings[RW]
Public Class Methods
new(options = {})
click to toggle source
# File lib/klaviyo-rails/delivery_method.rb, line 6 def initialize(options = {}) self.settings = { secret_key: ENV['KLAVIYO_SECRET_KEY'], token: ENV['KLAVIYO_TOKEN'] }.merge(options) end
Public Instance Methods
deliver!(mail)
click to toggle source
# File lib/klaviyo-rails/delivery_method.rb, line 13 def deliver!(mail) if mail['as_event'] && mail['as_event'].value.to_s == 'true' response = client.event.track( event_name: mail['event_name'].value, customer_properties: { '$email': mail['to'].to_s }, properties: { email: mail['to'].to_s, '$event_id': mail.object_id, date: Time.current, context: JSON.load(mail['context'].value), subject: mail['subject'].to_s, to: mail['to'].to_s, from:{ name: from_name(mail), email: from_email(mail) } } ) else response = client.templates.render_and_send(klaviyo_message(mail)) end if settings[:return_response] response else self end end
Private Instance Methods
client()
click to toggle source
# File lib/klaviyo-rails/delivery_method.rb, line 75 def client @client ||= ::Klaviyo::Client.new(settings[:secret_key], settings[:token]) end
from_email(message)
click to toggle source
# File lib/klaviyo-rails/delivery_method.rb, line 61 def from_email(message) @from_email ||= message['from'] && message['from'].addresses.first end
from_name(message)
click to toggle source
# File lib/klaviyo-rails/delivery_method.rb, line 65 def from_name(message) @from_name || begin unless message['from'].display_names.compact.empty? @from_name = message['from'].display_names.compact.first end end @from_name end
klaviyo_message(message)
click to toggle source
# File lib/klaviyo-rails/delivery_method.rb, line 46 def klaviyo_message(message) @klaviyo_message = { id: message['template_id'].value, context: message['context'].value, service: settings.fetch(:service) { 'klaviyo' }, subject: message['subject'].to_s, to: message['to'].to_s } @klaviyo_message[:from_email] = from_email(message) if from_email(message) @klaviyo_message[:from_name] = from_name(message) if from_name(message) @klaviyo_message end