Class: Sms
- Inherits:
-
Object
- Object
- Sms
- 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
-
.deliver_sms(sms) ⇒ Object
:nodoc:.
- .delivery_method ⇒ Object
- .delivery_method=(obj) ⇒ Object
-
.inform_observers(sms) ⇒ Object
Called when delivery is taking place.
-
.receive(params) ⇒ Object
Receive an SMS.
-
.register_observer(observer) ⇒ Object
The observer needs to respond to a single method #delivered_sms(sms) which receives the sms that is sent.
-
.set_payload_for_sms(payload, sms) ⇒ Object
:nodoc:.
- .unregister_observer(observer) ⇒ Object
Instance Method Summary collapse
-
#receive(sms) ⇒ Object
abstract
Subclasses need to implement this method in order to handle incoming SMS.
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_method ⇒ Object
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
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
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.
8 9 10 |
# File 'lib/sms.rb', line 8 def receive(sms) raise NotImplementedError.new('Need to subclass and implement') end |