Sha256: 42263a9dd8473d0d5df60147b04db3733dbc45abcb88f7a4263e7459cdf118a6

Contents?: true

Size: 905 Bytes

Versions: 1

Compression:

Stored size: 905 Bytes

Contents

require 'faraday_middleware'
require 'routemaster/errors'

module Routemaster
  module Middleware
    class ErrorHandling < Faraday::Response::Middleware
      ERRORS_MAPPING = {
        (400..400) => Errors::InvalidResourceError,
        (401..401) => Errors::UnauthorizedResourceAccessError,
        (403..403) => Errors::UnauthorizedResourceAccessError,
        (404..404) => Errors::ResourceNotFoundError,
        (409..409) => Errors::ConflictResourceError,
        (412..412) => Errors::IncompatibleVersionError,
        (413..413) => Errors::InvalidResourceError,
        (429..429) => Errors::ResourceThrottlingError,
        (407..500) => Errors::FatalResourceError
      }.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

1 entries across 1 versions & 1 rubygems

Version Path
routemaster-drain-2.0.0 lib/routemaster/middleware/error_handling.rb