Exception: Eco::API::Error

Inherits:
StandardError
  • Object
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, ExternalIdTaken, Handler, Handlers, InternalServerError, InvalidObjectId, SchemaNotFound, SupervisorNotFound, Unclassified, UnknownErrorClass, UnknownField, UnknownPersonId

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of Error.



148
149
150
151
152
153
154
# File 'lib/eco/api/error.rb', line 148

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.



146
147
148
# File 'lib/eco/api/error.rb', line 146

def entry
  @entry
end

#err_msgObject (readonly)

Returns the value of attribute err_msg.



146
147
148
# File 'lib/eco/api/error.rb', line 146

def err_msg
  @err_msg
end

#msgObject (readonly)

Returns the value of attribute msg.



146
147
148
# File 'lib/eco/api/error.rb', line 146

def msg
  @msg
end

#sessionObject (readonly)

Returns the value of attribute session.



146
147
148
# File 'lib/eco/api/error.rb', line 146

def session
  @session
end

Class Method Details

.descendants(direct: false) ⇒ Object



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

def descendants(direct: false)
  ObjectSpace.each_object(::Class).select do |klass|
    klass < self
  end.sort do |k_1, k_2|
    next -1 if k_2 < k_1
    next  1 if k_1 < k_2

    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) ⇒ Boolean

Returns:

  • (Boolean)


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

def descendants?(direct: false)
  descendants(direct: direct).length.positive?
end

.err_match?(err_msg) ⇒ Boolean

Returns:

  • (Boolean)


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

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

.get_type(err_msg, first: true) ⇒ Object



120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/eco/api/error.rb', line 120

def get_type(err_msg, first: true)
  type = nil

  descendants(direct: true).reverse.each do |klass|
    next unless klass.err_match?(err_msg)

    type = klass
    next unless klass.descendants?(direct: true)

    type = klass.get_type(err_msg, first: false) || type
  end

  return type unless first

  type || Unclassified
end

.known_err_class?(klass) ⇒ Boolean

Returns:

  • (Boolean)


137
138
139
# File 'lib/eco/api/error.rb', line 137

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

.validate_err_class(klass) ⇒ Object

Raises:



141
142
143
# File 'lib/eco/api/error.rb', line 141

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

Instance Method Details

#built_errorObject



156
157
158
# File 'lib/eco/api/error.rb', line 156

def built_error
  msg
end