Skip to content

Commit ea12952

Browse files
committed
Refactor to cut repetition in raise_error's status code handling
1 parent 68273b8 commit ea12952

File tree

1 file changed

+12
-16
lines changed

1 file changed

+12
-16
lines changed

lib/faraday/response/raise_error.rb

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,16 @@ class RaiseError < Middleware
88
# rubocop:disable Naming/ConstantName
99
ClientErrorStatuses = (400...500)
1010
ServerErrorStatuses = (500...600)
11+
ClientErrorStatusesWithCustomExceptions = {
12+
400 => Faraday::BadRequestError,
13+
401 => Faraday::UnauthorizedError,
14+
403 => Faraday::ForbiddenError,
15+
404 => Faraday::ResourceNotFound,
16+
408 => Faraday::RequestTimeoutError,
17+
409 => Faraday::ConflictError,
18+
422 => Faraday::UnprocessableEntityError,
19+
429 => Faraday::TooManyRequestsError
20+
}.freeze
1121
# rubocop:enable Naming/ConstantName
1222

1323
DEFAULT_OPTIONS = { include_request: true, allowed_statuses: [] }.freeze
@@ -16,26 +26,12 @@ def on_complete(env)
1626
return if Array(options[:allowed_statuses]).include?(env[:status])
1727

1828
case env[:status]
19-
when 400
20-
raise Faraday::BadRequestError, response_values(env)
21-
when 401
22-
raise Faraday::UnauthorizedError, response_values(env)
23-
when 403
24-
raise Faraday::ForbiddenError, response_values(env)
25-
when 404
26-
raise Faraday::ResourceNotFound, response_values(env)
29+
when *ClientErrorStatusesWithCustomExceptions.keys
30+
raise ClientErrorStatusesWithCustomExceptions[env[:status]], response_values(env)
2731
when 407
2832
# mimic the behavior that we get with proxy requests with HTTPS
2933
msg = %(407 "Proxy Authentication Required")
3034
raise Faraday::ProxyAuthError.new(msg, response_values(env))
31-
when 408
32-
raise Faraday::RequestTimeoutError, response_values(env)
33-
when 409
34-
raise Faraday::ConflictError, response_values(env)
35-
when 422
36-
raise Faraday::UnprocessableEntityError, response_values(env)
37-
when 429
38-
raise Faraday::TooManyRequestsError, response_values(env)
3935
when ClientErrorStatuses
4036
raise Faraday::ClientError, response_values(env)
4137
when ServerErrorStatuses

0 commit comments

Comments
 (0)