module Faraday class Response::RaiseError < Response::Middleware ClientErrorStatuses = 400...600 def on_complete(env) case env[:status] when 404 raise Faraday::Error::ResourceNotFound, response_values(env) when 407 # mimic the behavior that we get with proxy requests with HTTPS raise Faraday::Error::ConnectionFailed, %{407 "Proxy Authentication Required "} when ClientErrorStatuses raise Faraday::Error::ClientError, response_values(env) end end def response_values(env) {:status => env.status, :headers => env.response_headers, :body => env.body} end end end