class Geocodable::Request

Public Class Methods

api_key() click to toggle source
# File lib/geocodable/request.rb, line 30
def api_key
  Geocodable.api_key
end
conn() click to toggle source
# File lib/geocodable/request.rb, line 18
def conn
  Faraday::Response.register_middleware json_parser: JSONParser
  conn = Faraday.new(Geocodable.api_base, ssl: ssl) do |faraday|
    faraday.adapter :excon
    faraday.response :json_parser
  end
end
get(url, params={}) click to toggle source
# File lib/geocodable/request.rb, line 6
def get(url, params={})
  response = conn.get url, params, headers
  handle_api_error(response) unless response.success?
  response.body
end
handle_api_error(response) click to toggle source
# File lib/geocodable/request.rb, line 34
def handle_api_error(response)
  code, body = response.status, response.body
  begin
    error = body[:errors] || body[:error]
    error = error.first if error.kind_of? Array
  rescue
    raise APIError.new(
      "Invalid response object from API: #{body.inspect}", code, body)
  end

  case code
  when 400, 404 then raise InvalidRequestError.new(error, code, body)
  when 401      then raise AuthenticationError.new(error, code, body)
  when 403      then raise AccessDisabledError.new(error, code, body)
  when 429      then raise OverRequestLimitError.new(error, code, body)
  else
    raise APIError.new(error, code, body)
  end
end
headers() click to toggle source
# File lib/geocodable/request.rb, line 12
def headers
  hash = { user_agent: "geocodable-ruby/#{Geocodable::VERSION}" }
  hash[:authorization] = "Bearer #{api_key}" unless api_key.nil?
  hash
end
ssl() click to toggle source
# File lib/geocodable/request.rb, line 26
def ssl
  { verify: Geocodable.ssl_verify_certs, ca_file: @ssl_bundle_path }
end