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