class ActiveSMS::Configuration

Configuration object for ActiveSMS

Attributes

backends[R]

returns list of registered sms backends

default_backend[R]

returns key of the default sms backend

Public Class Methods

new() click to toggle source
# File lib/active_sms/configuration.rb, line 26
def initialize
  register_backend :null_sender, ActiveSMS::Backend::NullSender
  self.default_backend = :null_sender
end

Public Instance Methods

default_backend=(value) click to toggle source

Specify default sms backend. It must be registered.

@param value [Symbol] Backend key which will be used as default

# File lib/active_sms/configuration.rb, line 34
def default_backend=(value)
  raise ArgumentError, "default_backend must be a symbol!" unless value.is_a? Symbol

  unless @backends.keys.include? value
    raise ArgumentError, "Unregistered backend cannot be set as default!"
  end

  @default_backend = value
end
register_backend(key, classname, params = {}) click to toggle source

Register sms provider backend

@param key [Symbol] Key for acessing backend in any part of ActiveSMS @param classname [Class] Real class implementation of sms backend @param params [Hash]

Optional params for backend. Useful for passing tokens and options
# File lib/active_sms/configuration.rb, line 50
def register_backend(key, classname, params = {})
  raise ArgumentError, "backend key must be a symbol!" unless key.is_a? Symbol

  unless classname.class == Class
    raise ArgumentError, "backend class must be class (not instance or string)"
  end

  unless classname.method_defined? :send_sms
    raise ArgumentError, "backend must provide method send_sms"
  end

  define_backend(key, classname, params)
end
remove_backend(key) click to toggle source

Removes registered sms backend

@param key [Symbol] Key of already registered backend

# File lib/active_sms/configuration.rb, line 67
def remove_backend(key)
  if key == default_backend
    raise ArgumentError, "Removing default_backend is prohibited"
  end

  @backends.delete key
  true
end

Private Instance Methods

define_backend(key, classname, params) click to toggle source
# File lib/active_sms/configuration.rb, line 78
def define_backend(key, classname, params)
  @backends ||= {}
  @backends[key] = {
    class: classname,
    params: params
  }
end