Sha256: d06e7fd5bd720fa79097fa973236e6d867b40d0ba25df508888e7217d3862af7

Contents?: true

Size: 774 Bytes

Versions: 3

Compression:

Stored size: 774 Bytes

Contents

require "active_support/core_ext/hash"

# frozen_string_literal: true
class Twelvefactor::Environment::Mailer::Smtp
  def self.apply app, mailer_url
    config = app.config
    config.action_mailer.delivery_method = :smtp
    config.action_mailer.smtp_settings = smtp_settings mailer_url
  end

  def self.smtp_settings url
    basic_settings(url)
      .merge(extra_settings(url.query))
      .compact
  end

  def self.basic_settings url
    {
      address: url.host,
      port: url.port,
      user_name: url.user && URI.unescape(url.user),
      password: url.password && URI.unescape(url.password)
    }
  end

  def self.extra_settings query
    return {} unless query

    CGI
      .parse(query)
      .map { |k, val| [k.to_sym, val.first] }
      .to_h
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
twelvefactor-mailer-1.0.3 lib/twelvefactor/environment/mailer/smtp.rb
twelvefactor-mailer-1.0.2 lib/twelvefactor/environment/mailer/smtp.rb
twelvefactor-mailer-1.0.1 lib/twelvefactor/environment/mailer/smtp.rb