class Smess::Config

Attributes

configured_outputs[RW]
default_output[RW]
default_sender_id[RW]
nothing[RW]
output_by_country_code[RW]
output_types[RW]

Public Class Methods

new() click to toggle source
# File lib/smess.rb, line 58
def initialize
  @nothing = false
  @default_output = nil
  @default_sender_id = "Smess"
  @output_types = %i{auto card_board_fish clickatell global_mouth link_mobility iconectiv mblox smsglobal twilio}
  @configured_outputs = {}
  @output_by_country_code = {}

  if ENV["RAILS_ENV"] == "test"
    @configured_outputs = {test: {type: :test, config: nil}}
  end

  register_output({
    name: :auto,
    country_codes: [],
    type: :auto,
    config: {}
  })
end

Public Instance Methods

add_country_code(cc, output=default_output) click to toggle source
# File lib/smess.rb, line 78
def add_country_code(cc, output=default_output)
  raise ArgumentError.new("Invalid country code") unless cc.to_i.to_s == cc.to_s
  raise ArgumentError.new("Unknown output specified") unless outputs.include? output.to_sym
  output_by_country_code[cc.to_s] = output.to_sym
  true
end
country_codes() click to toggle source
# File lib/smess.rb, line 104
def country_codes
  output_by_country_code.keys
end
outputs() click to toggle source
# File lib/smess.rb, line 100
def outputs
  configured_outputs.keys
end
register_output(options) click to toggle source
# File lib/smess.rb, line 85
def register_output(options)
  name = options.fetch(:name).to_sym
  type = options.fetch(:type).to_sym
  countries = options.fetch(:country_codes)
  config = options.fetch(:config)

  raise ArgumentError.new("Duplicate output name") if outputs.include? name
  raise ArgumentError.new("Unknown output type specified") unless output_types.include? type

  configured_outputs[name] = {type: type, config: config}
  countries.each do |cc|
    add_country_code(cc, name)
  end
end