Sha256: d2ce55b1675fe7d94fc68f3c506da8c9ae728b74883f4b748652426b4193a009

Contents?: true

Size: 1.45 KB

Versions: 19

Compression:

Stored size: 1.45 KB

Contents

module Routemaster
  module Errors
    class BaseError < RuntimeError
      attr_reader :env

      def initialize(env)
        @env = env
        super(message)
      end

      def errors
        body.fetch('errors', {})
      end

      def message
        raise NotImplementedError
      end

      def body
        @body ||= deserialized_body
      end

      private

      def deserialized_body
        @env.body.empty? ? {} : JSON.parse(@env.body)
      end
    end

    class UnauthorizedResourceAccess < BaseError
      def message
        "Unauthorized Resource Access Error"
      end
    end

    class InvalidResource < BaseError
      def message
        "Invalid Resource Error"
      end
    end

    class ResourceNotFound < BaseError
      def message
        "Resource Not Found Error"
      end
    end

    class FatalResource < BaseError
      def message
        "Fatal Resource Error. body: #{body}, url: #{env.url}, method: #{env.method}"
      end
    end

    class ConflictResource < BaseError
      def message
        "ConflictResourceError Resource Error"
      end
    end

    class IncompatibleVersion < BaseError
      def message
        headers = env.request_headers.select { |k, _| k != 'Authorization' }
        "Incompatible Version Error. headers: #{headers}, url: #{env.url}, method: #{env.method}"
      end
    end

    class ResourceThrottling < BaseError
      def message
        "Resource Throttling Error"
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
routemaster-drain-3.3.0 lib/routemaster/errors.rb
routemaster-drain-3.2.0 lib/routemaster/errors.rb
routemaster-drain-3.1.0 lib/routemaster/errors.rb
routemaster-drain-3.0.3 lib/routemaster/errors.rb
routemaster-drain-3.0.2 lib/routemaster/errors.rb
routemaster-drain-3.0.1 lib/routemaster/errors.rb
routemaster-drain-3.0.0 lib/routemaster/errors.rb
routemaster-drain-2.5.4 lib/routemaster/errors.rb
routemaster-drain-2.5.3 lib/routemaster/errors.rb
routemaster-drain-2.5.2 lib/routemaster/errors.rb
routemaster-drain-2.5.1 lib/routemaster/errors.rb
routemaster-drain-2.5.0 lib/routemaster/errors.rb
routemaster-drain-2.4.4 lib/routemaster/errors.rb
routemaster-drain-2.4.3 lib/routemaster/errors.rb
routemaster-drain-2.4.2 lib/routemaster/errors.rb
routemaster-drain-2.4.1 lib/routemaster/errors.rb
routemaster-drain-2.4.0 lib/routemaster/errors.rb
routemaster-drain-2.3.0 lib/routemaster/errors.rb
routemaster-drain-2.2.2 lib/routemaster/errors.rb