Class: Sms

Inherits:
Object
  • Object
show all
Defined in:
lib/sms.rb,
lib/sms/message.rb,
lib/sms/method/gsm.rb,
lib/sms/method/file.rb,
lib/sms/method/bezeq.rb,
lib/sms/method/kannel.rb,
lib/sms/method/twilio.rb,
lib/sms/log_subscriber.rb

Defined Under Namespace

Modules: Method Classes: DeliveryError, LogSubscriber, Message

Constant Summary collapse

@@delivery_notification_observers =
[]

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.deliver_sms(sms) ⇒ Object

:nodoc:



44
45
46
47
48
49
# File 'lib/sms.rb', line 44

def deliver_sms(sms) #:nodoc:
  ActiveSupport::Notifications.instrument("deliver.sms") do |payload|
    set_payload_for_sms(payload, sms)
    yield # Let Sms do the delivery actions
  end
end

.delivery_methodObject



19
20
21
# File 'lib/sms.rb', line 19

def delivery_method
  @@delivery_method
end

.delivery_method=(obj) ⇒ Object



15
16
17
# File 'lib/sms.rb', line 15

def delivery_method=(obj)
  @@delivery_method = obj
end

.inform_observers(sms) ⇒ Object

Called when delivery is taking place

Parameters:



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

def inform_observers(sms)
  @@delivery_notification_observers.each do |observer|
    observer.delivered_sms(sms)
  end
end

.receive(params) ⇒ Object

Receive an SMS

Parameters:

  • params (Hash)

Options Hash (params):

  • :from (String)
  • :to (String)
  • :text (String)


57
58
59
60
61
62
63
# File 'lib/sms.rb', line 57

def receive(params)
  ActiveSupport::Notifications.instrument("receive.sms") do |payload|
    sms = Sms::Message.new(params)
    set_payload_for_sms(payload, sms)
    new.receive(sms)
  end
end

.register_observer(observer) ⇒ Object

The observer needs to respond to a single method #delivered_sms(sms) which receives the sms that is sent.



25
26
27
28
29
# File 'lib/sms.rb', line 25

def register_observer(observer)
  unless @@delivery_notification_observers.include?(observer)
    @@delivery_notification_observers << observer
  end
end

.set_payload_for_sms(payload, sms) ⇒ Object

:nodoc:



65
66
67
68
69
# File 'lib/sms.rb', line 65

def set_payload_for_sms(payload, sms) #:nodoc:
  payload[:from] = sms.from
  payload[:to] = sms.to
  payload[:text] = sms.text
end

.unregister_observer(observer) ⇒ Object



31
32
33
# File 'lib/sms.rb', line 31

def unregister_observer(observer)
  @@delivery_notification_observers.delete(observer)
end

Instance Method Details

#receive(sms) ⇒ Object

This method is abstract.

Subclasses need to implement this method in order to handle incoming SMS. It should return the received message.

Parameters:

Raises:

  • (NotImplementedError)


8
9
10
# File 'lib/sms.rb', line 8

def receive(sms)
  raise NotImplementedError.new('Need to subclass and implement')
end