Class: SmsCarrier::Sms

Inherits:
Object
  • Object
show all
Defined in:
lib/sms_carrier/sms.rb

Constant Summary collapse

@@delivery_notification_observers =
[]
@@delivery_interceptors =
[]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSms

Returns a new instance of Sms.



5
6
7
8
9
10
# File 'lib/sms_carrier/sms.rb', line 5

def initialize
  @options = {}
  @perform_deliveries = true
  @raise_delivery_errors = true
  @to = []
end

Instance Attribute Details

#bodyObject

Returns the value of attribute body.



3
4
5
# File 'lib/sms_carrier/sms.rb', line 3

def body
  @body
end

#delivery_handlerObject

Returns the value of attribute delivery_handler.



3
4
5
# File 'lib/sms_carrier/sms.rb', line 3

def delivery_handler
  @delivery_handler
end

#fromObject

Returns the value of attribute from.



3
4
5
# File 'lib/sms_carrier/sms.rb', line 3

def from
  @from
end

#optionsObject

Returns the value of attribute options.



3
4
5
# File 'lib/sms_carrier/sms.rb', line 3

def options
  @options
end

#perform_deliveriesObject

Returns the value of attribute perform_deliveries.



3
4
5
# File 'lib/sms_carrier/sms.rb', line 3

def perform_deliveries
  @perform_deliveries
end

#raise_delivery_errorsObject

Returns the value of attribute raise_delivery_errors.



3
4
5
# File 'lib/sms_carrier/sms.rb', line 3

def raise_delivery_errors
  @raise_delivery_errors
end

Class Method Details

.inform_interceptors(sms) ⇒ Object



108
109
110
111
112
# 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) ⇒ Object



102
103
104
105
106
# 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

.register_interceptor(interceptor) ⇒ Object



96
97
98
99
100
# 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) ⇒ Object



90
91
92
93
94
# 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

Instance Method Details

#[](name) ⇒ Object



12
13
14
# File 'lib/sms_carrier/sms.rb', line 12

def [](name)
  options[name]
end

#[]=(name, value) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# 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

#deliverObject



50
51
52
53
54
55
56
57
58
59
# 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!Object



61
62
63
64
65
66
# 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 = {}) ⇒ Object



68
69
70
71
72
73
74
# 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_interceptorsObject



46
47
48
# File 'lib/sms_carrier/sms.rb', line 46

def inform_interceptors
  Sms.inform_interceptors(self)
end

#inform_observersObject



42
43
44
# File 'lib/sms_carrier/sms.rb', line 42

def inform_observers
  Sms.inform_observers(self)
end

#to(val = nil) ⇒ Object



28
29
30
31
32
33
34
35
36
# 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) ⇒ Object



38
39
40
# File 'lib/sms_carrier/sms.rb', line 38

def to=( val )
  to(val)
end

#to_sObject



76
77
78
79
80
81
82
83
84
85
# 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