class Acenda::Response

Public Class Methods

new(response, url="", params=[], debug = false) click to toggle source
# File lib/acenda-client.rb, line 16
def initialize(response, url="", params=[], debug = false)
    @logger = Logger.new(STDOUT)
    @url = url
    @params = params
    @response = treat_response(response)

    @logger.info "Acenda:: response body:" if debug == true
    @logger.info response.body if debug == true
    @logger.info "Acenda:: response code:" if debug == true
    @logger.info response.code if debug == true
    puts "\r\n" if debug == true
end

Public Instance Methods

get_code() click to toggle source
# File lib/acenda-client.rb, line 45
def get_code()
    raise Acenda::APIErrorHTTP, "Request didn't go through and error cannot be parsed." if @response[:code].to_i == 0
    return @response[:code].to_i
end
get_number() click to toggle source
# File lib/acenda-client.rb, line 41
def get_number()
    return @response[:num_total]
end
get_params() click to toggle source
# File lib/acenda-client.rb, line 33
def get_params()
    return @params
end
get_result() click to toggle source
# File lib/acenda-client.rb, line 37
def get_result()
    return @response[:result]
end
get_status() click to toggle source
# File lib/acenda-client.rb, line 50
def get_status()
    return @response[:status]
end
get_url() click to toggle source
# File lib/acenda-client.rb, line 29
def get_url()
    return @url
end

Private Instance Methods

symbolize_result(source) click to toggle source
# File lib/acenda-client.rb, line 73
def symbolize_result(source)
    dest = source.is_a?(Array) ? [] : {}

    source.each_with_index { |(key,value), index|
        k = key.is_a?(String) ? key.to_sym : key
        if value.is_a? Hash or value.is_a? Array
            dest[k] = symbolize_result(value)
        else
            dest[k] = value
        end
    } if source.is_a? Hash

    source.each_with_index { |value, index|
        dest[index] = symbolize_result(value)
    } if source.class == Array

    return dest
end
treat_response(http_response) click to toggle source
# File lib/acenda-client.rb, line 56
def treat_response(http_response)
    begin
        if http_response.class == String
            return symbolize_result(JSON.parse(http_response))
        else
            return {
                :result => symbolize_result(JSON.parse(http_response.body)),
                :code => http_response.code().to_i,
                :num_total => 1,
                :status => http_response.message()
            }
        end
    rescue JSON::ParserError => e
        raise Acenda::APIErrorHTTP, "JSON response is not a good format for query #{@url.to_s} and params #{@params.to_json}"
    end
end