27 lines
643 B
Ruby
27 lines
643 B
Ruby
class Liquid::CampaignTemplateService
|
|
pattr_initialize [:campaign!, :contact!]
|
|
|
|
def call(message)
|
|
process_liquid_in_content(message_drops, message)
|
|
end
|
|
|
|
private
|
|
|
|
def message_drops
|
|
{
|
|
'contact' => ContactDrop.new(contact),
|
|
'agent' => UserDrop.new(campaign.sender),
|
|
'inbox' => InboxDrop.new(campaign.inbox),
|
|
'account' => AccountDrop.new(campaign.account)
|
|
}
|
|
end
|
|
|
|
def process_liquid_in_content(drops, message)
|
|
message = message.gsub(/`(.*?)`/m, '{% raw %}`\\1`{% endraw %}')
|
|
template = Liquid::Template.parse(message)
|
|
template.render(drops)
|
|
rescue Liquid::Error
|
|
message
|
|
end
|
|
end
|