class GiantClient::ExconAdapter

Public Instance Methods

normalize_response(response) click to toggle source
# File lib/giant_client/excon_adapter.rb, line 31
def normalize_response(response)
  status_code = response.status
  headers = normalize_header_hash(response.headers)
  body = response.body
  Response.new(status_code, headers, body)
end
request(method, opts) click to toggle source
# File lib/giant_client/excon_adapter.rb, line 7
def request(method, opts)
  if BODYLESS_METHODS.include?(method)
    raise GiantClient::Error::NotImplemented unless opts[:body] == ''
  end

  url = url_from_opts(opts)

  params = {}
  params[:method]  = method.to_s
  params[:headers] = opts[:headers]
  params[:body]  = opts[:body]
  params[:read_timeout]  = opts[:timeout]
  params[:connect_timeout]  = opts[:timeout]
  params[:write_timeout]  = opts[:timeout]

  begin
    response = Excon.new(url).request(params)
  rescue Excon::Errors::Timeout
    raise GiantClient::Error::Timeout, "the request timed out (timeout: #{opts[:timeout]}"
  end

  normalize_response(response)
end