class Feedigest::Config

Attributes

path[R]

Public Class Methods

new(path) click to toggle source
# File lib/feedigest/config.rb, line 6
def initialize(path)
  @path = path
end

Public Instance Methods

fetch(key) click to toggle source
# File lib/feedigest/config.rb, line 10
def fetch(key)
  options.fetch(key) # Delegate
end
mail_gem_smtp_options() click to toggle source

Translate SMTP options of feedigest for Mail gem

# File lib/feedigest/config.rb, line 24
def mail_gem_smtp_options
  {
    address: options.fetch(:smtp_address),
    port: options.fetch(:smtp_port),
    user_name: options.fetch(:smtp_username),
    password: options.fetch(:smtp_password),
    authentication: options.fetch(:smtp_auth),
    enable_starttls: options.fetch(:smtp_starttls)
  }
end
options() click to toggle source
# File lib/feedigest/config.rb, line 14
def options
  return @options if @options

  @options = default_options.merge(user_options)
  @options[:smtp_starttls] = @options[:smtp_starttls] == 'true'

  @options
end

Private Instance Methods

default_options() click to toggle source
# File lib/feedigest/config.rb, line 42
def default_options
  {
    entry_window: 24,
    email_sender: "feedigest@#{`hostname`.strip}",
    smtp_port: 587,
    smtp_auth: 'plain',
    smtp_starttls: 'true' # Gets converted to boolean
  }
end
user_options() click to toggle source
# File lib/feedigest/config.rb, line 37
def user_options
  YAML.safe_load(File.read(path)).
    map { |k, v| [k.to_sym, v] }.to_h # Symbolize keys
end