class Smshelper::Api::Nexmo

Public Class Methods

new(*args) click to toggle source
Calls superclass method Smshelper::Api::Base::new
# File lib/smshelper/api/nexmo.rb, line 7
def initialize(*args)
  config = args.shift
  @uname, @passwd = config.nexmo[:uname], config.nexmo[:passwd]
  super
end

Public Instance Methods

get_balance() click to toggle source
# File lib/smshelper/api/nexmo.rb, line 28
def get_balance
  {'EUR' => (get "account/get-balance/#{@uname}/#{@passwd}").values.last.to_s}
end
get_callback_response(args = {}) click to toggle source
# File lib/smshelper/api/nexmo.rb, line 36
def get_callback_response(args = {})
  if args['type']
    InboundMessage.new(
                       :message_id => args['messageId'],
                       :sender => args['msisdn'],
                       :recipient => args['to'],
                       :text => args['text'],
                       :timestamp => Time.parse(args['message-timestamp']),
                       :original_params => args
                       )
  elsif args['network-code']
    DeliveryReport.new(
                       :message_id => args['messageId'],
                       :timestamp => Time.parse(args['message-timestamp']),
                       :delivered => ((args['status'] == 'delivered') ? true : false),
                       :original_params => args
                       )
  else
    UnknownReply.new(args)
  end
end
get_status(message_id) click to toggle source
# File lib/smshelper/api/nexmo.rb, line 32
def get_status(message_id)
  raise NotImplementedError, "Sms status checks unsupported by #{self.class.name}"
end
send_message(message) click to toggle source
# File lib/smshelper/api/nexmo.rb, line 13
def send_message(message)
  message.utf_8 ? (q = {:type => 'unicode'}) : (q = {:type => 'text'})

  options = {
    :username => @uname,
    :password => @passwd,
    :to => message.recipient,
    :text => message.text,
    :from => message.sender}
  options = options.merge(@extra_options) unless @extra_options.nil?
  options = options.merge(q)
  resp = (post 'sms/json', :extra_query => options)
  process_response_code(resp['messages'].collect{|m| m['status']}.first) ? (@sent_message_ids << resp['messages'].collect{|m| m['message-id']}.first; resp['messages'].collect{|m| m['message-id']}.first) : (raise ErrorDuringSend, 'No response code provided by Nexmo!')
end

Private Instance Methods

process_response_code(code) click to toggle source
# File lib/smshelper/api/nexmo.rb, line 59
def process_response_code(code)
  (code == '0') ? true : false
end