def request(env)
method = env[:method]
method = method.to_s.upcase if method == :put
req = ::Typhoeus::Request.new env[:url].to_s,
:method => method,
:body => env[:body],
:headers => env[:request_headers],
:disable_ssl_peer_verification => (env[:ssl] && env[:ssl].disable?)
configure_ssl req, env
configure_proxy req, env
configure_timeout req, env
configure_socket req, env
req.on_complete do |resp|
if resp.timed_out?
if parallel?(env)
else
raise Faraday::Error::TimeoutError, "request timed out"
end
end
case resp.curl_return_code
when 0
when 7
raise Error::ConnectionFailed, resp.curl_error_message
when 60
raise Faraday::SSLError, resp.curl_error_message
else
raise Error::ClientError, resp.curl_error_message
end
save_response(env, resp.code, resp.body) do |response_headers|
response_headers.parse resp.headers
end
env[:response].finish(env) if parallel?(env)
end
req
end