Sha256: b5cf06e02e4bafc396f91b3036b8c3b8c889660d8133df9ceb9f9919488affa7

Contents?: true

Size: 1003 Bytes

Versions: 10

Compression:

Stored size: 1003 Bytes

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,
        (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

10 entries across 10 versions & 1 rubygems

Version Path
routemaster-drain-3.6.7 lib/routemaster/middleware/error_handling.rb
routemaster-drain-3.6.6 lib/routemaster/middleware/error_handling.rb
routemaster-drain-3.6.5 lib/routemaster/middleware/error_handling.rb
routemaster-drain-3.6.4 lib/routemaster/middleware/error_handling.rb
routemaster-drain-3.6.3 lib/routemaster/middleware/error_handling.rb
routemaster-drain-3.6.2 lib/routemaster/middleware/error_handling.rb
routemaster-drain-3.6.1 lib/routemaster/middleware/error_handling.rb
routemaster-drain-3.6.0 lib/routemaster/middleware/error_handling.rb
routemaster-drain-3.5.1 lib/routemaster/middleware/error_handling.rb
routemaster-drain-3.5.0 lib/routemaster/middleware/error_handling.rb