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