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