class Messente

Constants

ERROR_101
ERROR_102
ERROR_103
ERROR_104
ERROR_105
ERROR_106
ERROR_107
ERROR_111
FAILED_209
SUPPORTED_METHODS

Attributes

credentials[RW]
current_params[RW]
defaults[RW]
use_backup_uri[RW]

Public Class Methods

method_missing(method_name, *arguments, &block) click to toggle source

Methods below allows us to make all calls above as class methods DRY so we don’t need to define all methods again with calling instance from inside

Calls superclass method
# File lib/messente-rails/messente.rb, line 79
def self.method_missing(method_name, *arguments, &block)
  if SUPPORTED_METHODS.include? method_name
    self.new.send(method_name, *arguments, &block)
  else
    super
  end
end
new(username = nil, password = nil) click to toggle source
# File lib/messente-rails/messente.rb, line 21
def initialize(username = nil, password = nil)
  self.defaults = {
    response_as_is: MessenteRails::Configuration.response_as_is,
    retry_on_fail:  MessenteRails::Configuration.retry_on_fail
  }
  self.credentials = {
    username: username || MessenteRails::Configuration.username,
    password: password || MessenteRails::Configuration.password
  }
end
respond_to_missing?(method_name, include_private = false) click to toggle source
Calls superclass method
# File lib/messente-rails/messente.rb, line 87
def self.respond_to_missing?(method_name, include_private = false)
  SUPPORTED_METHODS.include? method_name || super
end

Public Instance Methods

cancel_sms(params) click to toggle source

messente.com/docs/api/rest/cancel-sms/ :sms_unique_id

# File lib/messente-rails/messente.rb, line 50
def cancel_sms(params)
  self.current_params = params
  response = send_request(params)
  smart_response(response.parsed_response)
end
get_balance() click to toggle source

messente.com/docs/api/rest/balance/

# File lib/messente-rails/messente.rb, line 57
def get_balance
  response = send_request
  smart_response(response.parsed_response)
end
get_dlr_response(params) click to toggle source

messente.com/docs/api/rest/delivery-request/sync/ :sms_unique_id

# File lib/messente-rails/messente.rb, line 42
def get_dlr_response(params)
  self.current_params = params
  response = send_request(params)
  smart_response(response.parsed_response)
end
pricelist() click to toggle source

messente.com/docs/api/rest/full-pricelist/

# File lib/messente-rails/messente.rb, line 71
def pricelist
  response = send_request
  smart_response(response.parsed_response)
end
prices(params) click to toggle source

messente.com/docs/api/rest/prices/ :country, :format

# File lib/messente-rails/messente.rb, line 64
def prices(params)
  self.current_params = params
  response = send_request(params)
  smart_response(response.parsed_response)
end
send_sms(params) click to toggle source

messente.com/docs/api/rest/sms/ :text, :to, :time_to_send, :from, ‘dlr-url’, :charset, :autoconvert, :udh

# File lib/messente-rails/messente.rb, line 34
def send_sms(params)
  self.current_params = params
  response = send_request(params)
  smart_response(response.parsed_response)
end

Private Instance Methods

human_readable_error(error) click to toggle source
# File lib/messente-rails/messente.rb, line 127
def human_readable_error(error)
  safe_error = error.gsub(' ', '_')
  self.class.const_defined?(safe_error) ? self.class.const_get(safe_error) : "#{error} not defined."
end
response_as_is?() click to toggle source
# File lib/messente-rails/messente.rb, line 132
def response_as_is?
  defaults && defaults[:response_as_is]
end
retry_on_fail?() click to toggle source
# File lib/messente-rails/messente.rb, line 136
def retry_on_fail?
  defaults && defaults[:retry_on_fail]
end
send_request(query = nil) click to toggle source
# File lib/messente-rails/messente.rb, line 93
def send_request(query = nil)
  action = caller[0].split('`').pop.gsub('\'', '')
  safe_query = query ? credentials.merge(query) : credentials
  url = if use_backup_uri === true
          self.use_backup_uri = false
          "#{ self.class.base_uri.gsub('api2', 'api3') }/#{ action }/"
        else
          "/#{ action }/"
        end
  self.class.post(url, { query: safe_query })
end
smart_response(response) click to toggle source
# File lib/messente-rails/messente.rb, line 105
def smart_response(response)
  if response_as_is?
    response
  else
    case response.split(' ').first
    when 'ERROR'
      [false, human_readable_error(response)]
    when 'FAILED'
      if retry_on_fail? && use_backup_uri != false
        self.use_backup_uri = true
        method_name = caller[0].split('`').pop.gsub('\'', '').to_sym
        current_params.blank? ? send(method_name) : send(method_name, current_params)
      else
        self.use_backup_uri = nil
      end
      [false, human_readable_error(response)]
    else
      [true, response]
    end
  end
end