class Percy::Client::Connection::NiceErrorMiddleware

Constants

CLIENT_ERROR_STATUS_RANGE

Public Instance Methods

on_complete(env) click to toggle source
# File lib/percy/client/connection.rb, line 11
def on_complete(env)
  error_class = nil

  case env[:status]
  when 400
    error_class = Percy::Client::BadRequestError
  when 401
    error_class = Percy::Client::UnauthorizedError
  when 402
    error_class = Percy::Client::PaymentRequiredError
  when 403
    error_class = Percy::Client::ForbiddenError
  when 404
    error_class = Percy::Client::NotFoundError
  when 409
    error_class = Percy::Client::ConflictError
  when 500
    error_class = Percy::Client::InternalServerError
  when 502
    error_class = Percy::Client::BadGatewayError
  when 503
    error_class = Percy::Client::ServiceUnavailableError
  when 504
    error_class = Percy::Client::GatewayTimeoutError
  when 520..530
    error_class = Percy::Client::CloudflareError
  when CLIENT_ERROR_STATUS_RANGE # Catchall.
    error_class = Percy::Client::HttpError
  end

  return unless error_class

  raise error_class.new(
    env.status, env.method.upcase, env.url, env.body,
    "Got #{env.status} (#{env.method.upcase} #{env.url}):\n#{env.body}",
  )
end