class PUNK::SendEmailWorker

Public Instance Methods

process() click to toggle source
# File lib/punk/workers/send_email_worker.rb, line 19
def process
  require "mailgun-ruby"

  client =
    if !PUNK.env.test? && PUNK.get.mailgun.mock
      Mailgun::Client.new(PUNK.get.mailgun.api_key, "bin.mailgun.net", PUNK.get.mailgun.postbin, ssl=false) # rubocop:disable Lint/UselessAssignment,Layout/SpaceAroundOperators
    else
      Mailgun::Client.new(PUNK.get.mailgun.api_key)
    end

  client.enable_test_mode! if PUNK.env.test?

  message =
    {
      from: from,
      to: to,
      subject: subject,
      template: template
    }
  variables.each { |variable, value| message["v:#{variable}"] = value } if variables.present?
  tags.each { |tag| message["o:tag"] = tag } if tags.present?

  # TODO: store return value in Message table
  # TODO: update Message table with events from mailgun webhooks
  client.send_message(PUNK.get.mailgun.domain, message)

  return unless !PUNK.env.test? && PUNK.get.mailgun.mock

  require "launchy"
  Launchy.open("http://bin.mailgun.net/#{PUNK.get.mailgun.postbin}")
end
validate() click to toggle source
# File lib/punk/workers/send_email_worker.rb, line 7
def validate
  validates_type String, :from
  validates_type String, :to
  validates_email :to
  validates_includes PUNK.get.mailgun.whitelist, :to if !PUNK.env.test? && !PUNK.get.mailgun.mock && PUNK.get.mailgun.whitelist.present?
  validates_type String, :subject
  validates_type String, :template
  validates_type Hash, :variables, allow_nil: true
  validates_type Array, :tags, allow_nil: true
  validates_length_range 0..1, :tags, allow_nil: true
end