Sha256: 8aca98cc83ba00c7a4a30f04d85f1c1988b143614771a8b7a7dbb5b8671c63c0

Contents?: true

Size: 866 Bytes

Versions: 2

Compression:

Stored size: 866 Bytes

Contents

module VulnDBHQ
  module Error

    # Custom error class for rescuing from all VulnDBHQ errors
    class Base < StandardError

      attr_reader :wrapped_exception

      def self.errors
        @errors ||= Hash[descendants.map{|klass| [klass.const_get(:HTTP_STATUS_CODE), klass]}]
      end

      def self.descendants
        ObjectSpace.each_object(::Class).select{|klass| klass < self}
      end

      # Initializes a new Error object
      #
      # @param exception [Exception, String]
      # @return [VulnDBHQ::Error]
      def initialize(exception=$!)
        if exception.respond_to?(:backtrace)
          super(exception.message)
          @wrapped_exception = exception
        else
          super(exception.to_s)
        end
      end

      def backtrace
        @wrapped_exception ? @wrapped_exception.backtrace : super
      end
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
vulndbhq-0.1.1 lib/vulndbhq/error/base.rb
vulndbhq-0.1.0 lib/vulndbhq/error/base.rb