class MessageBird::HTTP::SMS

Attributes

api_url[W]
message[R]
recipients[R]
sender[R]
username[W]

Public Class Methods

new(sender_name, recipients, message, options = {}, &block) click to toggle source
# File lib/messagebird/http/sms.rb, line 8
def initialize(sender_name, recipients, message, options = {}, &block)
  self.sender = sender_name
  @recipients = format_recipients(recipients)
  @message    = URI.escape(message)
  @callback   = block

  set_optional_variables(options)
end

Public Instance Methods

api_url() click to toggle source
# File lib/messagebird/http/sms.rb, line 46
def api_url
  @api_url ||= MessageBird::Config.api_url
end
deliver() click to toggle source
# File lib/messagebird/http/sms.rb, line 17
def deliver
  Sender.deliver(self, &@callback)
end
password() click to toggle source
# File lib/messagebird/http/sms.rb, line 37
def password
  @password ||= escape MessageBird::Config.password
end
request_uri() click to toggle source
# File lib/messagebird/http/sms.rb, line 25
def request_uri
  uri.request_uri
end
test_mode() click to toggle source
# File lib/messagebird/http/sms.rb, line 41
def test_mode
  # If test = 1, then the message is not actually sent or scheduled, and there will be no credits deducted
  @test_mode ||= MessageBird::Config.fetch(:test_mode, true) ? 1 : 0
end
uri() click to toggle source
# File lib/messagebird/http/sms.rb, line 21
def uri
  @uri ||= URI.parse(url)
end
url() click to toggle source
# File lib/messagebird/http/sms.rb, line 29
def url
  @url ||= "#{api_url}?username=#{username}&password=#{password}&sender=#{sender}&test=#{test_mode}&destination=#{recipients}&body=#{message}"
end
username() click to toggle source
# File lib/messagebird/http/sms.rb, line 33
def username
  @username ||= escape MessageBird::Config.username
end

Private Instance Methods

ensure_valid_sender!(input) click to toggle source
# File lib/messagebird/http/sms.rb, line 81
def ensure_valid_sender!(input)
  raise SenderInvalid.new(input) unless sender_valid?(input)
end
format_recipients(recipients) click to toggle source
# File lib/messagebird/http/sms.rb, line 52
def format_recipients(recipients)
  # API accepts multiple phone numbers by seperating them with a comma ','
  if recipients.is_a? Enumerable
    recipients.join(',')
  else
    "#{recipients}"
  end
end
password=(str) click to toggle source
# File lib/messagebird/http/sms.rb, line 67
def password=(str)
  @password = escape(str)
end
sender=(str) click to toggle source
# File lib/messagebird/http/sms.rb, line 76
def sender=(str)
  ensure_valid_sender!(str)
  @sender = str
end
sender_string?(input) click to toggle source
# File lib/messagebird/http/sms.rb, line 89
def sender_string?(input)
  input =~ /^[a-zA-Z0-9]{1,11}$/
end
sender_telephone_number?(input) click to toggle source
# File lib/messagebird/http/sms.rb, line 93
def sender_telephone_number?(input)
  input =~ /^\+(\d{11})$/
end
sender_valid?(input) click to toggle source
# File lib/messagebird/http/sms.rb, line 85
def sender_valid?(input)
  sender_telephone_number?(input) || sender_string?(input)
end
set_optional_variables(options = {}) click to toggle source
# File lib/messagebird/http/sms.rb, line 61
def set_optional_variables(options = {})
  options.each do |k,v|
    send("#{k}=".to_sym, v)
  end
end
test_mode=(bool) click to toggle source
# File lib/messagebird/http/sms.rb, line 71
def test_mode=(bool)
  raise ArgumentError unless !!bool == bool
  @test_mode = bool ? 1 : 0
end