Skip to content

Commit

Permalink
Pass response object to Error initializer
Browse files Browse the repository at this point in the history
  • Loading branch information
qsona committed Mar 15, 2020
1 parent c1bec29 commit 31a0500
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 9 deletions.
27 changes: 18 additions & 9 deletions lib/faraday/response/raise_error.rb
Expand Up @@ -13,25 +13,34 @@ class RaiseError < Middleware
def on_complete(env)
case env[:status]
when 400
raise Faraday::BadRequestError, response_values(env)
raise Faraday::BadRequestError
.new(response_values(env), nil, env.response)
when 401
raise Faraday::UnauthorizedError, response_values(env)
raise Faraday::UnauthorizedError
.new(response_values(env), nil, env.response)
when 403
raise Faraday::ForbiddenError, response_values(env)
raise Faraday::ForbiddenError
.new(response_values(env), nil, env.response)
when 404
raise Faraday::ResourceNotFound, response_values(env)
raise Faraday::ResourceNotFound
.new(response_values(env), nil, env.response)
when 407
# mimic the behavior that we get with proxy requests with HTTPS
msg = %(407 "Proxy Authentication Required")
raise Faraday::ProxyAuthError.new(msg, response_values(env))
raise Faraday::ProxyAuthError
.new(msg, response_values(env), env.response)
when 409
raise Faraday::ConflictError, response_values(env)
raise Faraday::ConflictError
.new(response_values(env), nil, env.response)
when 422
raise Faraday::UnprocessableEntityError, response_values(env)
raise Faraday::UnprocessableEntityError
.new(response_values(env), nil, env.response)
when ClientErrorStatuses
raise Faraday::ClientError, response_values(env)
raise Faraday::ClientError
.new(response_values(env), nil, env.response)
when ServerErrorStatuses
raise Faraday::ServerError, response_values(env)
raise Faraday::ServerError
.new(response_values(env), nil, env.response)
when nil
raise Faraday::NilStatusError, response_values(env)
end
Expand Down
27 changes: 27 additions & 0 deletions spec/faraday/response/raise_error_spec.rb
Expand Up @@ -29,6 +29,9 @@
expect(ex.message).to eq('the server responded with status 400')
expect(ex.response[:headers]['X-Reason']).to eq('because')
expect(ex.response[:status]).to eq(400)
expect(ex.response_status).to eq(400)
expect(ex.response_body).to eq('keep looking')
expect(ex.response_headers['X-Reason']).to eq('because')
end
end

Expand All @@ -37,6 +40,9 @@
expect(ex.message).to eq('the server responded with status 401')
expect(ex.response[:headers]['X-Reason']).to eq('because')
expect(ex.response[:status]).to eq(401)
expect(ex.response_status).to eq(401)
expect(ex.response_body).to eq('keep looking')
expect(ex.response_headers['X-Reason']).to eq('because')
end
end

Expand All @@ -45,6 +51,9 @@
expect(ex.message).to eq('the server responded with status 403')
expect(ex.response[:headers]['X-Reason']).to eq('because')
expect(ex.response[:status]).to eq(403)
expect(ex.response_status).to eq(403)
expect(ex.response_body).to eq('keep looking')
expect(ex.response_headers['X-Reason']).to eq('because')
end
end

Expand All @@ -53,6 +62,9 @@
expect(ex.message).to eq('the server responded with status 404')
expect(ex.response[:headers]['X-Reason']).to eq('because')
expect(ex.response[:status]).to eq(404)
expect(ex.response_status).to eq(404)
expect(ex.response_body).to eq('keep looking')
expect(ex.response_headers['X-Reason']).to eq('because')
end
end

Expand All @@ -61,6 +73,9 @@
expect(ex.message).to eq('407 "Proxy Authentication Required"')
expect(ex.response[:headers]['X-Reason']).to eq('because')
expect(ex.response[:status]).to eq(407)
expect(ex.response_status).to eq(407)
expect(ex.response_body).to eq('keep looking')
expect(ex.response_headers['X-Reason']).to eq('because')
end
end

Expand All @@ -69,6 +84,9 @@
expect(ex.message).to eq('the server responded with status 409')
expect(ex.response[:headers]['X-Reason']).to eq('because')
expect(ex.response[:status]).to eq(409)
expect(ex.response_status).to eq(409)
expect(ex.response_body).to eq('keep looking')
expect(ex.response_headers['X-Reason']).to eq('because')
end
end

Expand All @@ -77,6 +95,9 @@
expect(ex.message).to eq('the server responded with status 422')
expect(ex.response[:headers]['X-Reason']).to eq('because')
expect(ex.response[:status]).to eq(422)
expect(ex.response_status).to eq(422)
expect(ex.response_body).to eq('keep looking')
expect(ex.response_headers['X-Reason']).to eq('because')
end
end

Expand All @@ -93,6 +114,9 @@
expect(ex.message).to eq('the server responded with status 499')
expect(ex.response[:headers]['X-Reason']).to eq('because')
expect(ex.response[:status]).to eq(499)
expect(ex.response_status).to eq(499)
expect(ex.response_body).to eq('keep looking')
expect(ex.response_headers['X-Reason']).to eq('because')
end
end

Expand All @@ -101,6 +125,9 @@
expect(ex.message).to eq('the server responded with status 500')
expect(ex.response[:headers]['X-Error']).to eq('bailout')
expect(ex.response[:status]).to eq(500)
expect(ex.response_status).to eq(500)
expect(ex.response_body).to eq('fail')
expect(ex.response_headers['X-Error']).to eq('bailout')
end
end
end

0 comments on commit 31a0500

Please sign in to comment.