class Peng::Engine

Constants

DEFAULT_CHANNELS

Public Class Methods

new(data={}) click to toggle source
# File lib/peng/engine.rb, line 7
def initialize(data={})
  @data = data
end

Public Instance Methods

deliver(config) click to toggle source
# File lib/peng/engine.rb, line 11
def deliver(config)
  name_or_klass = config[:channel] || :mail
  channel_klass = name_or_klass.is_a?(Symbol) ? DEFAULT_CHANNELS[name_or_klass] : name_or_klass
  
  from = config[:from]

  if config[:to].is_a?(String)
    to = config[:to]        
  else
    address_method_name = config[:address_method_name].presence || channel_klass.address_method_name
    to = config[:to].public_send(address_method_name) 
    @data[:recipient] ||= config[:to]
  end    

  if config[:subject].present?
    subject = Mustache.render(config[:subject], @data)
  end
  if config[:body].present?        
    body    = Mustache.render(config[:body], @data)
  end

  message = {to: to, from: from, subject: subject, body: body}

  async = config.has_key?(:async) ? config[:async] : true

  async ? channel_klass.inline(message) : channel_klass.async(message) 
end