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