Class: Eco::API::Session::Batch::Errors
- Defined in:
- lib/eco/api/session/batch/errors.rb
Overview
Helper object linked to a Batch::Status
. Its aim is to manage the errors of the batch status.
Defined Under Namespace
Classes: ErrorCache
Instance Attribute Summary collapse
- #status ⇒ Object readonly
Status object shortcuts collapse
- #logger ⇒ Object
- #method ⇒ Object
- #queue ⇒ Object
-
#session ⇒ Eco::API::Session
Currently active
session
. - #to_index(*args) ⇒ Object
Pure errors helper methods collapse
-
#any? ⇒ Boolean
Was there any Sever (reply) error as a result of this batch?.
-
#by_type(only_entries: true) ⇒ Hash
Groups
entries
with errortype
. -
#count ⇒ Integer
The number of
entries
that got error.
Messaging methods collapse
Instance Method Summary collapse
-
#errors ⇒ Array<Eco::API::Session::Batch::Errors::ErrorCache>
For all the
entries
with errors generates anArray
ofErrorCache
objects. -
#initialize(status:) ⇒ Errors
constructor
A new instance of Errors.
- #person_ref(entry) ⇒ Object
Constructor Details
#initialize(status:) ⇒ Errors
Returns a new instance of Errors.
13 14 15 16 17 18 |
# File 'lib/eco/api/session/batch/errors.rb', line 13 def initialize(status:) msg = "Expected Batch::Status as root. Given: #{status.class}" raise ArgumentError msg unless status.is_a?(Eco::API::Session::Batch::Status) @status = status end |
Instance Attribute Details
#status ⇒ Object (readonly)
8 9 10 |
# File 'lib/eco/api/session/batch/errors.rb', line 8 def status @status end |
Instance Method Details
#any? ⇒ Boolean
Was there any Sever (reply) error as a result of this batch?
58 59 60 |
# File 'lib/eco/api/session/batch/errors.rb', line 58 def any? queue.any? {|query| !status[query].success?} end |
#by_type(only_entries: true) ⇒ Hash
Groups entries
with error type
66 67 68 69 70 71 72 |
# File 'lib/eco/api/session/batch/errors.rb', line 66 def by_type(only_entries: true) errors.group_by(&:type).transform_values do |arr| next arr unless only_entries arr.map(&:entry) end end |
#count ⇒ Integer
Returns the number of entries
that got error.
51 52 53 |
# File 'lib/eco/api/session/batch/errors.rb', line 51 def count entries.length end |
#errors ⇒ Array<Eco::API::Session::Batch::Errors::ErrorCache>
For all the entries
with errors generates an Array
of ErrorCache
objects
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/eco/api/session/batch/errors.rb', line 81 def errors entries.each_with_object([]) do |entry, arr| response = status[entry] next unless (body = response.body) errs = [] case body when Hash body_errs = body["errors"] || body["error"] errs = [body_errs].flatten(1).compact if body_errs response_errs = errs.empty? && !response.success? errs = [body["response"]].flatten(1).compact if response_errs when String errs = [body] end errs.each do |msg| err_cache = ErrorCache.new( klass = Eco::API::Error.get_type(msg), klass.new(err_msg: msg, entry: entry, session: session), entry, response ) arr.push(err_cache) end end end |
#logger ⇒ Object
43 44 45 |
# File 'lib/eco/api/session/batch/errors.rb', line 43 def logger status.logger end |
#message ⇒ Object
112 113 114 115 116 117 118 119 |
# File 'lib/eco/api/session/batch/errors.rb', line 112 def msgs = strs if msgs.empty? "There were no errors for the current batch '#{method}'!! ;)" else "There were #{msgs.length} errors:\n" + msgs.join("\n") end end |
#method ⇒ Object
28 29 30 |
# File 'lib/eco/api/session/batch/errors.rb', line 28 def method status.method end |
#person_ref(entry) ⇒ Object
131 132 133 |
# File 'lib/eco/api/session/batch/errors.rb', line 131 def person_ref(entry) Eco::API::Session::Batch::Feedback.person_ref(entry) end |
#print ⇒ Object
121 122 123 124 125 126 127 128 |
# File 'lib/eco/api/session/batch/errors.rb', line 121 def print msgs = strs if msgs.empty? logger.info("There were no errors for the current batch '#{method}'!! ;)") else logger.error("There were #{msgs.length} errors:\n" + msgs.join("\n")) end end |
#queue ⇒ Object
23 24 25 |
# File 'lib/eco/api/session/batch/errors.rb', line 23 def queue status.queue end |
#session ⇒ Eco::API::Session
Returns currently active session
.
39 40 41 |
# File 'lib/eco/api/session/batch/errors.rb', line 39 def session status.session end |
#to_index(*args) ⇒ Object
34 35 36 |
# File 'lib/eco/api/session/batch/errors.rb', line 34 def to_index(*args) status.to_index(*args) end |