class GemLookup::Gems
Public Class Methods
new(gem_list, serializer:)
click to toggle source
# File lib/gem_lookup/gems.rb, line 11 def initialize(gem_list, serializer:) @gem_list = gem_list @serializer = serializer @batches = [] @json = { gems: [] } end
Public Instance Methods
process()
click to toggle source
# File lib/gem_lookup/gems.rb, line 18 def process batch_gems process_batches end
Private Instance Methods
batch_gems()
click to toggle source
# File lib/gem_lookup/gems.rb, line 46 def batch_gems gems = @gem_list.dup @batches.push gems.shift(RateLimit.number) while gems.any? end
batch_mode?()
click to toggle source
# File lib/gem_lookup/gems.rb, line 52 def batch_mode? @batches.size > 1 end
display_batch_details(num, total, batch)
click to toggle source
# File lib/gem_lookup/gems.rb, line 62 def display_batch_details(num, total, batch) return unless streaming? batch_iterator(num: num, total: total) if batch_mode? querying(batch: batch) end
display_gem_count()
click to toggle source
# File lib/gem_lookup/gems.rb, line 56 def display_gem_count return unless streaming? gem_count(num: @gem_list.size) if @gem_list.size > 1 end
display_results()
click to toggle source
# File lib/gem_lookup/gems.rb, line 69 def display_results return unless streaming? display(json: @json[:gems].shift) while @json[:gems].any? end
make_requests(batch:)
click to toggle source
# File lib/gem_lookup/gems.rb, line 42 def make_requests(batch:) @json = Requests.new(batch: batch, json: @json).process end
process_batch(batch:, index:)
click to toggle source
# File lib/gem_lookup/gems.rb, line 33 def process_batch(batch:, index:) display_batch_details(index + 1, @batches.size, batch) make_requests batch: batch display_results sleep RateLimit.interval if batch_mode? end
process_batches()
click to toggle source
# File lib/gem_lookup/gems.rb, line 25 def process_batches display_gem_count @batches.each_with_index {|batch, index| process_batch batch: batch, index: index } display(json: @json) unless streaming? end