Class: GiantClient::TyphoeusAdapter

Inherits:
AbstractAdapter show all
Defined in:
lib/giant_client/typhoeus_adapter.rb

Instance Method Summary collapse

Methods inherited from AbstractAdapter

#delete, #encode_query, #get, #head, #normalize_header, #normalize_header_hash, #post, #prepend_question_mark, #put, #stringify_query, #url_from_opts

Instance Method Details

#normalize_response(response) ⇒ Object



32
33
34
35
36
37
# File 'lib/giant_client/typhoeus_adapter.rb', line 32

def normalize_response(response)
  status_code = response.code
  headers = normalize_header_hash(response.headers_hash)
  body = response.body
  Response.new(status_code, headers, body)
end

#request(method, opts) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/giant_client/typhoeus_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
  params[:headers] = opts[:headers]
  params[:body] = opts[:body]
  params[:timeout] = 1000 * opts[:timeout] # typhoeus does milliseconds
  params[:connect_timeout] = 1000 * opts[:timeout]

  response = Typhoeus::Request.run(url, params)

  if response.curl_return_code == 28 # timeout
    raise GiantClient::Error::Timeout, "the request timed out (timeout: #{opts[:timeout]}"
  end

  normalize_response(response)

end