Sha256: 5f212c636e09252f685443dc27b631f98918e4b0c10fd44e8e78f99eb92837f0

Contents?: true

Size: 1.54 KB

Versions: 1

Compression:

Stored size: 1.54 KB

Contents

# frozen_string_literal: true

require_relative 'errors'

module Evervault
  module Errors
    class LegacyErrorMap
      def self.raise_errors_on_failure(status_code, body, headers)
        return if status_code < 400

        case status_code
        when 404
          raise EvervaultError, 'Resource not found'
        when 400
          raise EvervaultError, 'Bad request'
        when 401
          raise EvervaultError, 'Unauthorized'
        when 403
          if (headers.include? 'x-evervault-error-code') && (headers['x-evervault-error-code'] == 'forbidden-ip-error')
            raise ForbiddenIPError, 'IP is not present in Cage whitelist'
          end

          raise EvervaultError, 'Forbidden'

        when 500
          raise EvervaultError, 'Server error'
        when 502
          raise EvervaultError, 'Bad gateway error'
        when 503
          raise EvervaultError, 'Service unavailable'
        else
          raise EvervaultError, message_for_unexpected_error_without_type(body)
        end
      end

      private

      def message_for_unexpected_error_without_type(error_details)
        if error_details.nil?
          return(
            'An unexpected error occurred without message or status code. Please contact Evervault support'
          )
        end
        message = error_details['message']
        status_code = error_details['statusCode']
        "An unexpected error occured. It occurred with the message: #{
          message
        } and http_code: '#{status_code}'. Please contact Evervault support"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
evervault-3.0.1 lib/evervault/errors/legacy_error_map.rb