Class: Showroom::Http::Middleware::RaiseError

Inherits:
Faraday::Middleware
  • Object
show all
Defined in:
lib/showroom/http/middleware/raise_error.rb

Overview

Faraday middleware that maps HTTP error statuses and parsing failures to Showroom error classes.

Examples:

Registration

conn.use Showroom::Http::Middleware::RaiseError

Constant Summary collapse

STATUS_MAP =

Maps specific HTTP status codes to Showroom error classes.

{
  400 => Showroom::BadRequest,
  404 => Showroom::NotFound,
  422 => Showroom::UnprocessableEntity,
  429 => Showroom::TooManyRequests
}.freeze

Instance Method Summary collapse

Instance Method Details

#call(env) ⇒ Object

Executes the middleware, rescuing network-level Faraday errors.

Parameters:

  • env (Faraday::Env)

Raises:



29
30
31
32
33
34
35
36
# File 'lib/showroom/http/middleware/raise_error.rb', line 29

def call(env)
  @app.call(env).on_complete { |response_env| on_complete(response_env) }
rescue Faraday::ConnectionFailed, Faraday::TimeoutError => e
  raise ConnectionError, e.message
rescue Faraday::ParsingError
  raise InvalidResponse,
        'Response was not JSON — store may be password-protected or blocking requests'
end