class SmsCarrier::Sms

Attributes

body[RW]
delivery_handler[RW]
from[RW]
options[RW]
perform_deliveries[RW]
raise_delivery_errors[RW]

Public Class Methods

inform_interceptors(sms) click to toggle source
# File lib/sms_carrier/sms.rb, line 108
def self.inform_interceptors(sms)
  @@delivery_interceptors.each do |interceptor|
    interceptor.delivering_sms(sms)
  end
end
inform_observers(sms) click to toggle source
# File lib/sms_carrier/sms.rb, line 102
def self.inform_observers(sms)
  @@delivery_notification_observers.each do |observer|
    observer.delivered_sms(sms)
  end
end
new() click to toggle source
# File lib/sms_carrier/sms.rb, line 5
def initialize
  @options = {}
  @perform_deliveries = true
  @raise_delivery_errors = true
  @to = []
end
register_interceptor(interceptor) click to toggle source
# File lib/sms_carrier/sms.rb, line 96
def self.register_interceptor(interceptor)
  unless @@delivery_interceptors.include?(interceptor)
    @@delivery_interceptors << interceptor
  end
end
register_observer(observer) click to toggle source
# File lib/sms_carrier/sms.rb, line 90
def self.register_observer(observer)
  unless @@delivery_notification_observers.include?(observer)
    @@delivery_notification_observers << observer
  end
end

Public Instance Methods

[](name) click to toggle source
# File lib/sms_carrier/sms.rb, line 12
def [](name)
  options[name]
end
[]=(name, value) click to toggle source
# File lib/sms_carrier/sms.rb, line 16
def []=(name, value)
  if name.to_s == 'body'
    self.body = value
  elsif name.to_s == 'from'
    self.from = value
  elsif name.to_s == 'to'
    self.to = value
  else
    options[name] = value
  end
end
deliver() click to toggle source
# File lib/sms_carrier/sms.rb, line 50
def deliver
  inform_interceptors
  if delivery_handler
    delivery_handler.deliver_sms(self) { do_delivery }
  else
    do_delivery
  end
  inform_observers
  self
end
deliver!() click to toggle source
# File lib/sms_carrier/sms.rb, line 61
def deliver!
  inform_interceptors
  response = delivery_method.deliver!(self)
  inform_observers
  delivery_method.settings[:return_response] ? response : self
end
delivery_method(method = nil, settings = {}) click to toggle source
# File lib/sms_carrier/sms.rb, line 68
def delivery_method(method = nil, settings = {})
  unless method
    @delivery_method
  else
    @delivery_method = method.new(settings)
  end
end
inform_interceptors() click to toggle source
# File lib/sms_carrier/sms.rb, line 46
def inform_interceptors
  Sms.inform_interceptors(self)
end
inform_observers() click to toggle source
# File lib/sms_carrier/sms.rb, line 42
def inform_observers
  Sms.inform_observers(self)
end
to( val = nil ) click to toggle source
# File lib/sms_carrier/sms.rb, line 28
def to( val = nil )
  if val.nil?
    @to
  elsif val.is_a? Array
    @to = @to + val
  elsif !@to.include? val
    @to << val
  end
end
to=( val ) click to toggle source
# File lib/sms_carrier/sms.rb, line 38
def to=( val )
  to(val)
end
to_s() click to toggle source
# File lib/sms_carrier/sms.rb, line 76
def to_s
  buffer = ''
  options.each do |key, value|
    buffer += "#{key}: #{value}\n"
  end
  buffer += "From: #{from}\n"
  buffer += "To: #{to}\n"
  buffer += "Body: #{body}\n"
  buffer
end

Private Instance Methods

do_delivery() click to toggle source
# File lib/sms_carrier/sms.rb, line 116
def do_delivery
  begin
    if perform_deliveries
      delivery_method.deliver!(self)
    end
  rescue => e
    raise e if raise_delivery_errors
  end
end