class ExotelApi::Response

Public Class Methods

new(response) click to toggle source
# File lib/exotel_api/response.rb, line 4
def initialize(response)
  #To handle unexpected parsing from httparty
  response = response.parsed_response
  response_base = response['TwilioResponse']
  unless response_base.include?('RestException')
    set_response_data(response_base)
  else
    set_response_error(response_base)
  end
end

Public Instance Methods

set_response_data(response_base) click to toggle source
# File lib/exotel_api/response.rb, line 15
def set_response_data(response_base)
  (response_base['Call'] or response_base['SMSMessage'] or response_base['Numbers'] or response_base['Result']).each do |key, value|
    set_variable(key, value)
  end
end
set_response_error(response_base) click to toggle source
# File lib/exotel_api/response.rb, line 21
def set_response_error(response_base)
  response_base['RestException'].each do |key, value|
    set_variable(key, value)
    instance_variable_set('@status', 'DND') #Override
  end
end
set_variable(key, value) click to toggle source
# File lib/exotel_api/response.rb, line 28
def set_variable(key, value)
  attr_name = underscore_format(key)
  self.class.send(:attr_accessor, attr_name) #Set accessors dynamically
  instance_variable_set("@#{attr_name}", value)
end

Protected Instance Methods

underscore_format(string) click to toggle source

TODO: CamelCase to underscore: check if we have to add this to string class.

# File lib/exotel_api/response.rb, line 37
def underscore_format(string)
  string.gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
  gsub(/([a-z\d])([A-Z])/,'\1_\2').
  tr("-", "_").
  downcase
end