Sha256: 9d85fdabe88213dac38dbc5d368380152aa1012185872b9f3810d895619d52b0

Contents?: true

Size: 1.02 KB

Versions: 3

Compression:

Stored size: 1.02 KB

Contents

require 'faraday_middleware'
require 'routemaster/errors'

module Routemaster
  module Middleware
    class ErrorHandling < Faraday::Response::Middleware
      ERRORS_MAPPING = {
        (400..400) => Errors::InvalidResource,
        (401..401) => Errors::UnauthorizedResourceAccess,
        (403..403) => Errors::UnauthorizedResourceAccess,
        (404..404) => Errors::ResourceNotFound,
        (405..405) => Errors::MethodNotAllowed,
        (409..409) => Errors::ConflictResource,
        (410..410) => Errors::ResourceGone,
        (412..412) => Errors::IncompatibleVersion,
        (413..413) => Errors::InvalidResource,
        (429..429) => Errors::ResourceThrottling,
        (407..500) => Errors::FatalResource,
        (502..502) => Errors::BadGateway,
        (503..503) => Errors::ServiceNotAvailable
      }.freeze

      def on_complete(env)
        ERRORS_MAPPING.each do |range, error_class|
          if range.include?(env[:status])
            raise error_class.new(env)
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
routemaster-drain-3.7.1 lib/routemaster/middleware/error_handling.rb
routemaster-drain-3.7.0 lib/routemaster/middleware/error_handling.rb
routemaster-drain-3.6.8 lib/routemaster/middleware/error_handling.rb