Method: RoadForest::HTTP::UserAgent#send_request

Defined in:
lib/roadforest/http/user-agent.rb

#send_request(request, retry_limit = 5) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/roadforest/http/user-agent.rb', line 43

def send_request(request, retry_limit=5)
  #Check expires headers on received

  trace_message(request)
  response = http_client.do_request(request)
  trace_message(response)
  case response.status
  when 304 #Not Modified
    response = cache.fetch(request.url).fetch(response.etag)
    trace_message(response)
    return response
  when 401
    #XXX What if challenge matches existing Auth header? i.e. current
    #creds are wrong?
    request.headers["Authorization"] = keychain.challenge_response(url, response.headers["WWW-Authenticate"])
    raise Retryable
  end
  return response
rescue Retryable
  raise unless (retry_limit -= 1) > 0
  retry
end