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.



132
133
134
135
136
137
138
# File 'lib/eco/api/error.rb', line 132

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.



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

def entry
  @entry
end

#err_msgObject (readonly)

Returns the value of attribute err_msg.



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

def err_msg
  @err_msg
end

#msgObject (readonly)

Returns the value of attribute msg.



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

def msg
  @msg
end

#sessionObject (readonly)

Returns the value of attribute session.



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

def session
  @session
end

Class Method Details

.descendants(direct: false) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/eco/api/error.rb', line 82

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

Returns:

  • (Boolean)


99
100
101
# File 'lib/eco/api/error.rb', line 99

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

.err_match?(err_msg) ⇒ Boolean

Returns:

  • (Boolean)


103
104
105
# File 'lib/eco/api/error.rb', line 103

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

.get_type(err_msg, first: true) ⇒ Object



107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/eco/api/error.rb', line 107

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

Returns:

  • (Boolean)


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

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

.validate_err_class(klass) ⇒ Object

Raises:



125
126
127
# File 'lib/eco/api/error.rb', line 125

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

Instance Method Details

#built_errorObject



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

def built_error
  str ||= msg
end