From 642777f41d3216a42c7cc11946f86a623fee39ca Mon Sep 17 00:00:00 2001 From: Matthew Shafer Date: Thu, 8 Jan 2015 19:04:11 -0800 Subject: [PATCH] add new page finders base class for a few api endpoints to use. --- lib/tankard/api/adjuncts.rb | 45 +++++++++---------------- lib/tankard/api/base/page_finders.rb | 36 ++++++++++++++++++++ lib/tankard/api/beers.rb | 49 +++++++++++----------------- lib/tankard/api/search.rb | 46 +++++++++----------------- lib/tankard/api/yeasts.rb | 42 ++++++++++++------------ 5 files changed, 105 insertions(+), 113 deletions(-) create mode 100644 lib/tankard/api/base/page_finders.rb diff --git a/lib/tankard/api/adjuncts.rb b/lib/tankard/api/adjuncts.rb index 018fd0b..188b95e 100644 --- a/lib/tankard/api/adjuncts.rb +++ b/lib/tankard/api/adjuncts.rb @@ -1,5 +1,5 @@ require 'hashie' -require 'tankard/api/utils/page_finders' +require 'tankard/api/base/page_finders' module Tankard module Api @@ -7,19 +7,15 @@ module Api # # @see http://www.brewerydb.com/developers/docs-endpoint/adjunct_index # @author Matthew Shafer - class Adjuncts - include Tankard::Api::Utils::PageFinders + class Adjuncts < Tankard::Api::Base::PageFinders # @!parse include ::Enumerable - # Initialize a new object + # @!method initialize(request, options = {}) + # Initialize a new object # - # @param request [Tankard::Request] - # @param options [Hash] - # @return [Tankard::Api::Adjuncts] - def initialize(request, options = {}) - @http_client = request - @http_request_parameters = Hashie::Mash.new(options) - end + # @param request [Tankard::Request] + # @param options [Hash] + # @return [Tankard::Api::Adjuncts] # @!method each(&block) # Calls the given block once for each adjunct @@ -30,31 +26,20 @@ def initialize(request, options = {}) # @raise [Tankard::Error::HttpError] when a status other than 200 or 401 is returned # @raise [Tankard::Error::LoadError] when multi json is unable to decode json - # page number to query + # @!method page(number) + # page number to query # - # @param beer_id [String] - # @return [self] returns itself - def page(number) - @http_request_parameters.p = number - self - end + # @param beer_id [String] + # @return [self] returns itself - # Additional parameters to send with the request + # @!method params(options = {}) + # Additional parameters to send with the request # - # @param options [Hash] - # @return [self] returns itself - def params(options = {}) - options.each_pair do |key, value| - @http_request_parameters[key] = value - end - self - end + # @param options [Hash] + # @return [self] returns itself private - attr_reader :http_client - attr_reader :http_request_parameters - def http_request_uri 'adjuncts' end diff --git a/lib/tankard/api/base/page_finders.rb b/lib/tankard/api/base/page_finders.rb new file mode 100644 index 0000000..2ce1a27 --- /dev/null +++ b/lib/tankard/api/base/page_finders.rb @@ -0,0 +1,36 @@ +require 'hashie' +require 'tankard/api/utils/page_finders' + +module Tankard + module Api + module Base + # Base class for routes that can look up data across pages + # + # @author Matthew Shafer + class PageFinders + include Tankard::Api::Utils::PageFinders + + def initialize(request, options = {}) + @http_client = request + @http_request_parameters = Hashie::Mash.new(options) + end + + def page(number) + @http_request_parameters.p = number + self + end + + def params(options = {}) + options.each_pair do |key, value| + @http_request_parameters[key] = value + end + self + end + + private + + attr_reader :http_client, :http_request_parameters + end + end + end +end diff --git a/lib/tankard/api/beers.rb b/lib/tankard/api/beers.rb index 26c954d..81f6cd5 100644 --- a/lib/tankard/api/beers.rb +++ b/lib/tankard/api/beers.rb @@ -1,5 +1,5 @@ require 'hashie' -require 'tankard/api/utils/page_finders' +require 'tankard/api/base/page_finders' module Tankard module Api @@ -7,19 +7,15 @@ module Api # # @see http://www.brewerydb.com/developers/docs-endpoint/beer_index # @author Matthew Shafer - class Beers - include Tankard::Api::Utils::PageFinders + class Beers < Tankard::Api::Base::PageFinders # @!parse include ::Enumerable - # Initializes a new object + # @!method initialize(request, options = {}) + # Initializes a new object # - # @param request [Tankard::Request] - # @param options [Hash] - # @return [Tankard::Api::Beers] - def initialize(request, options = {}) - @http_client = request - @http_request_parameters = Hashie::Mash.new(options) - end + # @param request [Tankard::Request] + # @param options [Hash] + # @return [Tankard::Api::Beers] # @!method each(&block) # Calls the given block once for each beer @@ -48,36 +44,29 @@ def abv(beer_abv) self end + # Beer ibu to query with + # + # @param beer_ibu [String] + # @return [self] returns itself def ibu(beer_ibu) @http_request_parameters.ibu = beer_ibu self end - # Page number to request + # @!method page(number) + # Page number to request # - # @param number [Integer] - # @return [self] returns itself - def page(number) - @http_request_parameters.p = number - self - end + # @param number [Integer] + # @return [self] returns itself - # Additional parameters to send with the request + # @!method params(options = {}) + # Additional parameters to send with the request # - # @param options [Hash] - # @return [self] returns itself - def params(options = {}) - options.each_pair do |key, value| - @http_request_parameters[key] = value - end - self - end + # @param options [Hash] + # @return [self] returns itself private - attr_reader :http_client - attr_reader :http_request_parameters - def http_request_uri 'beers' end diff --git a/lib/tankard/api/search.rb b/lib/tankard/api/search.rb index fc76173..a3edb9a 100644 --- a/lib/tankard/api/search.rb +++ b/lib/tankard/api/search.rb @@ -1,5 +1,5 @@ require 'hashie' -require 'tankard/api/utils/page_finders' +require 'tankard/api/base/page_finders' module Tankard module Api @@ -7,20 +7,15 @@ module Api # # @see http://www.brewerydb.com/developers/docs-endpoint/search_index # @author Matthew Shafer - class Search - include ::Enumerable - include Tankard::Api::Utils::PageFinders + class Search < Tankard::Api::Base::PageFinders # @!parse include ::Enumerable - # Initializes a new object + # @!method initialize(request, options = {}) + # Initializes a new object # - # @param request [Tankard::Request] - # @param options [Hash] - # @return [Tankard::Api::Search] - def initialize(request, options = {}) - @http_client = request - @http_request_parameters = Hashie::Mash.new(options) - end + # @param request [Tankard::Request] + # @param options [Hash] + # @return [Tankard::Api::Search] # Calls the given block once for each result # @@ -44,25 +39,17 @@ def query(search_query) self end - # Page number to request + # @!method page(number) + # Page number to request # - # @param number [Integer] - # @return [self] returns itself - def page(number) - @http_request_parameters.p = number - self - end + # @param number [Integer] + # @return [self] returns itself - # Additional parameters to send with the request + # @!method params(options = {}) + # Additional parameters to send with the request # - # @param options [Hash] - # @return [self] returns itself - def params(options = {}) - options.each_pair do |key, value| - @http_request_parameters[key] = value - end - self - end + # @param options [Hash] + # @return [self] returns itself # Type of search to perform # @@ -110,9 +97,6 @@ def geo_point(latitude, longitude) private - attr_reader :http_client - attr_reader :http_request_parameters - def http_request_uri @request_endpoint = "/#{@http_request_parameters.delete(:endpoint)}" if @http_request_parameters.endpoint? endpoint = 'search' diff --git a/lib/tankard/api/yeasts.rb b/lib/tankard/api/yeasts.rb index 92a78f8..8f4eb8e 100644 --- a/lib/tankard/api/yeasts.rb +++ b/lib/tankard/api/yeasts.rb @@ -1,5 +1,5 @@ require 'hashie' -require 'tankard/api/utils/page_finders' +require 'tankard/api/base/page_finders' module Tankard module Api @@ -7,20 +7,15 @@ module Api # # @see http://www.brewerydb.com/developers/docs-endpoint/yeast_index # @author Matthew Shafer - class Yeasts - include Tankard::Api::Utils::PageFinders + class Yeasts < Tankard::Api::Base::PageFinders # @!parse include ::Enumerable - # Initializes a new object + # @!method initialize(request, options = {}) + # Initializes a new object # - # @param request [Tankard::Request] - # @param options [Hash] - # @return [Tankard::Api::Yeasts] - def initialize(request, options = {}) - @http_client = request - @http_request_parameters = Hashie::Mash.new(options) - @http_request_uri = 'yeasts' - end + # @param request [Tankard::Request] + # @param options [Hash] + # @return [Tankard::Api::Yeasts] # @!method each(&block) # Calls the given block once for each yeast @@ -31,20 +26,23 @@ def initialize(request, options = {}) # @raise [Tankard::Error::HttpError] when a status other than 200 or 401 is returned # @raise [Tankard::Error::LoadError] when multi json is unable to decode json - # Specific page to request + # @!method page(number) + # Specific page to request # - # @param number [Integer] - # @return [self] returns itself - def page(number) - @http_request_parameters[:p] = number - self - end + # @param number [Integer] + # @return [self] returns itself + + # @!method params(options = {}) + # Additional parameters to send with the request + # + # @param options [Hash] + # @return [self] returns itself private - attr_reader :http_client - attr_reader :http_request_parameters - attr_reader :http_request_uri + def http_request_uri + 'yeasts' + end end end