class Eco::API::Error

To identify api server errors

Attributes

entry[R]
err_msg[R]
msg[R]
session[R]

Public Class Methods

descendants(direct: false) click to toggle source
# File lib/eco/api/error.rb, line 75
def descendants(direct: false)
  ObjectSpace.each_object(::Class).select do |klass|
    klass < self
  end.sort do |k1, k2|
    next -1 if k2 < k1
    next  1 if k1 < k2
    0
  end.tap do |siblings|
    siblings.delete(Unclassified)
    if direct
      siblings.reject! do |si|
        siblings.any? {|s| si < s}
      end
    end
  end
end
descendants?(direct: false) click to toggle source
# File lib/eco/api/error.rb, line 92
def descendants?(direct: false)
  descendants(direct: direct).length > 0
end
err_match?(err_msg) click to toggle source
# File lib/eco/api/error.rb, line 96
def err_match?(err_msg)
  err_msg =~ @match
end
get_type(err_msg, first: true) click to toggle source
# File lib/eco/api/error.rb, line 100
def get_type(err_msg, first: true)
  type = nil
  descendants(direct: true).reverse.each do |klass|
    if klass.err_match?(err_msg)
      type = klass
      if klass.descendants?(direct: true)
        type = klass.get_type(err_msg, first: false) || type
      end
    end
  end
  return type unless first
  type || Unclassified
end
known_err_class?(klass) click to toggle source
# File lib/eco/api/error.rb, line 114
def known_err_class?(klass)
  descendants.push(self).include?(klass)
end
new(msg = nil, err_msg:, session: nil, entry: nil) click to toggle source
Calls superclass method
# File lib/eco/api/error.rb, line 125
def initialize(msg = nil, err_msg:, session: nil, entry: nil)
  @msg     = msg
  @err_msg = err_msg
  @session = session
  @entry   = entry

  super(built_error)
end
validate_err_class(klass) click to toggle source
# File lib/eco/api/error.rb, line 118
def validate_err_class(klass)
  raise UnknownErrorClass.new(klass: klass) unless known_err_class?(klass)
end

Public Instance Methods

built_error() click to toggle source
# File lib/eco/api/error.rb, line 134
def built_error
  str ||= msg
end