class MtgApiRequest

Constants

PARALLEL_COUNT
URL

Attributes

results[R]

Public Class Methods

new() click to toggle source
# File lib/mtg_api_request.rb, line 13
def initialize
  @results = []
end

Public Instance Methods

make() click to toggle source
# File lib/mtg_api_request.rb, line 17
def make
  while unfetched_pages.any?
    @temp_results = []
    connection.in_parallel do
      unfetched_pages.sample(PARALLEL_COUNT).each do |page|
        fetch_page(page)
      end
    end

    process_results(@temp_results)
  end
end

Private Instance Methods

connection() click to toggle source
# File lib/mtg_api_request.rb, line 41
def connection
  @connection ||= Faraday.new(url: URL) { |faraday| faraday.adapter :typhoeus }
end
fetch_page(page) click to toggle source
# File lib/mtg_api_request.rb, line 45
def fetch_page(page)
  url = URL + "?page=#{page}"
  puts "Fetching: #{url}"
  response = connection.get(url)

  @temp_results << [page, response]
end
process_results(temp_results) click to toggle source
# File lib/mtg_api_request.rb, line 53
def process_results(temp_results)
  temp_results.each do |page, result|
    next unless result.status == 200

    unfetched_pages.delete(page)
    results << JSON.parse(result.body)
  end
end
total_page_count() click to toggle source
# File lib/mtg_api_request.rb, line 36
def total_page_count
  response = Faraday.get(URL)
  (response.headers['total-count'].to_f / 100).ceil
end
unfetched_pages() click to toggle source
# File lib/mtg_api_request.rb, line 32
def unfetched_pages
  @unfetched_pages ||= (1..total_page_count).to_a
end