Sha256: 0a7c07d33833d9727a7651a3332c9f9222e3d9708b3dd6a08f989452c5e3e88e
Contents?: true
Size: 1.9 KB
Versions: 1
Compression:
Stored size: 1.9 KB
Contents
require 'tankard/api/request/get' module Tankard module Api module Utils module PageFinders include ::Enumerable include Tankard::Api::Request::Get # Loads data from brewerydb and calls supplied block with resulting data # # @yieldparam [Hash] hash containing individual beer information def each(&block) find_on_single_or_all_pages(http_request_uri, http_client, http_request_parameters, block) end private def find_on_single_or_all_pages(uri, request, options, block) if options[:p] find_on_single_page(uri, request, options, block) else find_on_all_pages(uri, request, options, block) end end def find_on_all_pages(uri, request, options, block) page = 0 begin page += 1 options[:p] = page if page > 1 total_pages = find_on_single_page(uri, request, options, block) end while page < total_pages end def find_on_single_page(uri, request, options, block) response = get_request(request, uri, options) call_block_with_data(response["data"], block) response["numberOfPages"].to_i end def call_block_with_data(data, block) raise Tankard::Error::InvalidResponse unless data if data.is_a?(Hash) block.call(data) else data.each { |item| block.call(item) } end end def http_request_uri raise NoMethodError.new("Need to implement method") end def http_client raise NoMethodError.new("Need to implement method") end def http_request_parameters raise NoMethodError.new("Need to implement method") end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
tankard-0.1.0 | lib/tankard/api/utils/page_finders.rb |