Class: MoteSMS::Message

Inherits:
Object
  • Object
show all
Defined in:
lib/mote_sms/message.rb

Overview

Represents an SMS message, currently only provides the tools to build new messages, not parse incoming messages or similar stuff.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(transport = nil, &block) ⇒ Message

Public: Create a new SMS message instance.

Examples:

sms = MoteSMS::Message.new do
  from '41791112233'
  to '41797776655'
  body 'Hi there.'
end
sms.from # => '41791112233'
sms.to # => ['41797776655']
sms.body # => 'Hi there.'

Returns a new instance.



28
29
30
31
32
33
# File 'lib/mote_sms/message.rb', line 28

def initialize(transport = nil, &block)
  Kernel.warn 'Message#new(transport) is deprecated and will be removed from MoteSMS' if transport
  @transport = transport
  @to = MoteSMS::NumberList.new
  instance_eval(&block) if block_given?
end

Instance Attribute Details

#body(val = nil) ⇒ Object



40
41
42
43
# File 'lib/mote_sms/message.rb', line 40

def body(val = nil)
  @body = val if val
  @body
end

#transportObject

The transport instance to use, if not defined falls back to use global MoteSMS.transport instance.



12
13
14
# File 'lib/mote_sms/message.rb', line 12

def transport
  @transport
end

Instance Method Details

#deliver(options = {}) ⇒ Object

Public: Deliver message using defined transport, to select the correct transport method uses any of these values:

  1. if options is defined

  2. falls back to self.transport

  3. falls back to use MoteSMS.transport (global transport)

Returns result of transport#deliver.



101
102
103
104
# File 'lib/mote_sms/message.rb', line 101

def deliver(options = {})
  Kernel.warn 'Message#deliver is deprecated and will be removed from MoteSMS. Please use #deliver_now'
  deliver_now options
end

#deliver_later(options = {}) ⇒ Object



112
113
114
115
116
# File 'lib/mote_sms/message.rb', line 112

def deliver_later(options = {})
  Kernel.warn 'options[:transport] is not supported in Message#deliveer_later' if options.delete(:transport)
  active_options = options.extract! :wait, :wait_until, :queue, :priority
  DeliveryJob.set(active_options).perform_later @from.to_s.presence, @to.normalized_numbers, @body, options
end

#deliver_now(options = {}) ⇒ Object



106
107
108
109
110
# File 'lib/mote_sms/message.rb', line 106

def deliver_now(options = {})
  Kernel.warn 'options[:transport] in Message#deliver_now is deprecated and will be removed from MoteSMS' if options[:transport]
  transport = options.delete(:transport) || self.transport || MoteSMS.transport
  transport.deliver(self, options)
end

#from(val = nil) ⇒ Object

Public: Returns string of sender, the sender should either be 11 alphanumeric characters or 20 numbers.

Examples:

sms.from = '41791231234'
sms.from # => '41791231234'

Returns value of sender.



54
55
56
57
# File 'lib/mote_sms/message.rb', line 54

def from(val = nil)
  self.from = val if val
  @from
end

#from=(val) ⇒ Object

Public: Asign an instance of Number instead of the direct string, so only vanity numbers are allowed.



61
62
63
# File 'lib/mote_sms/message.rb', line 61

def from=(val)
  @from = val ? Number.new(val, vanity: true) : nil
end

#to(*numbers) ⇒ Object

Public: Returns NumberList for this message.

Returns NumberList instance.



83
84
85
86
# File 'lib/mote_sms/message.rb', line 83

def to(*numbers)
  @to.push(*numbers) unless numbers.empty?
  @to
end

#to=(*args) ⇒ Object

Public: Set to multiple arguments or array, or whatever.

Examples:

sms.to = '41791231212'
sms.to # => ['41791231212']

sms.to = ['41791231212', '41791231212']
sms.to # => ['41791231212', '41791231212']

Returns nothing.



76
77
78
# File 'lib/mote_sms/message.rb', line 76

def to=(*args)
  @to = MoteSMS::NumberList.new.push(*args)
end