Class: RBattlenet::ResultCollection
- Inherits:
-
Object
- Object
- RBattlenet::ResultCollection
- Extended by:
- Forwardable
- Defined in:
- lib/rbattlenet/result_collection.rb
Instance Attribute Summary collapse
-
#results ⇒ Object
readonly
Returns the value of attribute results.
Instance Method Summary collapse
- #add(subject, field, response) ⇒ Object
- #complete(subject, results_needed) ⇒ Object
-
#initialize(response_type) ⇒ ResultCollection
constructor
A new instance of ResultCollection.
Constructor Details
#initialize(response_type) ⇒ ResultCollection
Returns a new instance of ResultCollection.
9 10 11 12 13 |
# File 'lib/rbattlenet/result_collection.rb', line 9 def initialize(response_type) @response_object = response_type == :hash ? HashResult : Result @empty_response_object = response_type == :hash ? EmptyHashResult : EmptyResult @results = [] end |
Instance Attribute Details
#results ⇒ Object (readonly)
Returns the value of attribute results.
7 8 9 |
# File 'lib/rbattlenet/result_collection.rb', line 7 def results @results end |
Instance Method Details
#add(subject, field, response) ⇒ Object
15 16 17 18 19 20 21 22 23 24 |
# File 'lib/rbattlenet/result_collection.rb', line 15 def add(subject, field, response) data = if response.code == 200 result = JSON.parse(response.body, object_class: @response_object) rescue nil result && (result.is_a?(Array) ? @response_object.new(data: result.size == 1 ? result.first : result) : result) end || @empty_response_object.new(status_code: response.code) data[:status_code] ||= 200 data[:source], data[:field] = subject, field @results << data end |
#complete(subject, results_needed) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/rbattlenet/result_collection.rb', line 26 def complete(subject, results_needed) subject_results = @results.group_by{ |result| result[:source] }[subject] if subject_results.size == results_needed @results.reject!{ |result| result[:source] == subject } base_result = subject_results.select{ |result| result[:field] == :itself }.first (subject_results - [base_result]).each{ |result| base_result << result } @results << base_result base_result end end |