Exception: Eco::API::Error

Inherits:
Exception show all
Defined in:
lib/eco/api/error.rb,
lib/eco/api/error/handler.rb,
lib/eco/api/error/handlers.rb

Overview

To identify api server errors

Defined Under Namespace

Classes: CyclicSupervisor, EmailInvalid, EmailMissing, EmailTaken, Handler, Handlers, InvalidObjectId, SchemaNotFound, SupervisorNotFound, Unclassified, UnknownErrorClass, UnknownPersonId, UnkownField

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Exception

#patch_full_message

Constructor Details

#initialize(msg = nil, err_msg:, session: nil, entry: nil) ⇒ Error



122
123
124
125
126
127
128
129
# File 'lib/eco/api/error.rb', line 122

def initialize(msg = nil, err_msg:, session: nil, entry: nil)
  @msg     = msg
  @err_msg = err_msg
  @session = session
  @entry   = entry

  super(built_error)
end

Instance Attribute Details

#entryObject (readonly)

Returns the value of attribute entry.



120
121
122
# File 'lib/eco/api/error.rb', line 120

def entry
  @entry
end

#err_msgObject (readonly)

Returns the value of attribute err_msg.



120
121
122
# File 'lib/eco/api/error.rb', line 120

def err_msg
  @err_msg
end

#msgObject (readonly)

Returns the value of attribute msg.



120
121
122
# File 'lib/eco/api/error.rb', line 120

def msg
  @msg
end

#sessionObject (readonly)

Returns the value of attribute session.



120
121
122
# File 'lib/eco/api/error.rb', line 120

def session
  @session
end

Class Method Details

.descendants(direct: false) ⇒ Object



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/eco/api/error.rb', line 74

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|
    if direct
      siblings.reject! do |si|
        siblings.any? {|s| si < s}
      end
    end
  end
end

.descendants?(direct: false) ⇒ Boolean



90
91
92
# File 'lib/eco/api/error.rb', line 90

def descendants?(direct: false)
  descendants(direct: direct).length > 0
end

.err_match?(err_msg) ⇒ Boolean



94
95
96
# File 'lib/eco/api/error.rb', line 94

def err_match?(err_msg)
  err_msg =~ @match
end

.get_type(err_msg) ⇒ Object



98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/eco/api/error.rb', line 98

def get_type(err_msg)
  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) || type
      end
    end
  end
  type
end

.known_err_class?(klass) ⇒ Boolean



111
112
113
# File 'lib/eco/api/error.rb', line 111

def known_err_class?(klass)
  descendants.push(self).include?(klass)
end

.validate_err_class(klass) ⇒ Object

Raises:



115
116
117
# File 'lib/eco/api/error.rb', line 115

def validate_err_class(klass)
  raise UnknownErrorClass.new(klass: klass) unless known_err_class?(klass)
end

Instance Method Details

#built_errorObject



131
132
133
# File 'lib/eco/api/error.rb', line 131

def built_error
  str ||= msg
end