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