Module: Bigcommerce::HttpErrors

Included in:
Middleware::HttpException
Defined in:
lib/bigcommerce/exception.rb

Constant Summary collapse

ERRORS =
{
  400 => Bigcommerce::BadRequest,
  401 => Bigcommerce::Unauthorized,
  403 => Bigcommerce::Forbidden,
  404 => Bigcommerce::NotFound,
  405 => Bigcommerce::MethodNotAllowed,
  406 => Bigcommerce::NotAccepted,
  408 => Bigcommerce::TimeOut,
  409 => Bigcommerce::ResourceConflict,
  429 => Bigcommerce::TooManyRequests,
  500 => Bigcommerce::InternalServerError,
  502 => Bigcommerce::BadGateway,
  503 => Bigcommerce::ServiceUnavailable,
  504 => Bigcommerce::GatewayTimeout,
  509 => Bigcommerce::BandwidthLimitExceeded
}.freeze
X_RETRY_AFTER_HEADER_KEY =
'x-retry-after'

Instance Method Summary collapse

Instance Method Details

#throw_http_exception!(code, env) ⇒ Object

Raises:

  • (ERRORS[code].new(response_headers))


48
49
50
51
52
53
54
55
56
57
58
# File 'lib/bigcommerce/exception.rb', line 48

def throw_http_exception!(code, env)
  return unless ERRORS.key?(code)

  response_headers = Faraday::Utils::Headers.new(env.response_headers)

  unless response_headers[X_RETRY_AFTER_HEADER_KEY].nil?
    response_headers[:retry_after] = response_headers[X_RETRY_AFTER_HEADER_KEY].to_i
  end

  raise ERRORS[code].new(response_headers), env.body
end