@@ -8,6 +8,16 @@ class RaiseError < Middleware
8
8
# rubocop:disable Naming/ConstantName
9
9
ClientErrorStatuses = ( 400 ...500 )
10
10
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
11
21
# rubocop:enable Naming/ConstantName
12
22
13
23
DEFAULT_OPTIONS = { include_request : true , allowed_statuses : [ ] } . freeze
@@ -16,26 +26,12 @@ def on_complete(env)
16
26
return if Array ( options [ :allowed_statuses ] ) . include? ( env [ :status ] )
17
27
18
28
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 )
27
31
when 407
28
32
# mimic the behavior that we get with proxy requests with HTTPS
29
33
msg = %(407 "Proxy Authentication Required")
30
34
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 )
39
35
when ClientErrorStatuses
40
36
raise Faraday ::ClientError , response_values ( env )
41
37
when ServerErrorStatuses
0 commit comments