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.



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

def initialize(transport = nil, &block)
  @transport = transport
  @to = MoteSMS::NumberList.new
  instance_eval(&block) if block_given?
end

Instance Attribute Details

#body(val = nil) ⇒ Object



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

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.



14
15
16
# File 'lib/mote_sms/message.rb', line 14

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.



97
98
99
100
# File 'lib/mote_sms/message.rb', line 97

def deliver(options = {})
  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.



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

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.



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

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

#to(*numbers) ⇒ Object

Public: Returns NumberList for this message.

Returns NumberList instance.



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

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.



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

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