Skip to content

Commit

Permalink
Merge cd80042 into 9fd3f6d
Browse files Browse the repository at this point in the history
  • Loading branch information
matthewshafer committed Jan 9, 2015
2 parents 9fd3f6d + cd80042 commit 4e7ef5a
Show file tree
Hide file tree
Showing 12 changed files with 177 additions and 177 deletions.
26 changes: 16 additions & 10 deletions lib/tankard/api/adjunct.rb
Original file line number Diff line number Diff line change
@@ -1,25 +1,31 @@
require 'hashie'
require 'tankard/api/utils/find'
require 'tankard/api/base/find'

module Tankard
module Api
# Access for the /adjunct/:id route on brewerydb
#
# @see http://www.brewerydb.com/developers/docs-endpoint/adjunct_index
# @author Matthew Shafer
class Adjunct
include Tankard::Api::Utils::Find
class Adjunct < Tankard::Api::Base::Find
# @!method initialize(request, options = {})
# Initializes a new object
#
# @param request [Tankard::Request]
# @param options [Hash]
# @return [Tankard::Api::Adjunct]

def initialize(request, options = {})
@http_client = request
@http_request_parameters = Hashie::Mash.new(options)
end
# @!method find(id_or_array, options={})
# Find a single or multiple adjunct's by their id
#
# @param id_or_array [String, Array]
# @param options [Hash]
# @return [Hash, Array] if a string with a adjunct id is passed to find then the hash of the adjunct's data is returned.
# if an array is passed to find an array containing hashes with each adjunct's data is returned.
# if an adjunct is not found nothing for that adjunct is returned.

private

attr_reader :http_client
attr_reader :http_request_parameters

def route
'adjunct'
end
Expand Down
45 changes: 15 additions & 30 deletions lib/tankard/api/adjuncts.rb
Original file line number Diff line number Diff line change
@@ -1,25 +1,21 @@
require 'hashie'
require 'tankard/api/utils/page_finders'
require 'tankard/api/base/page_finders'

module Tankard
module Api
# Access for the /adjuncts route on brewerydb
#
# @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
Expand All @@ -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
Expand Down
24 changes: 24 additions & 0 deletions lib/tankard/api/base/find.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
require 'hashie'
require 'tankard/api/utils/find'

module Tankard
module Api
module Base
# Base class for routes that can find a specific type of data
#
# @author Matthew Shafer
class Find
include Tankard::Api::Utils::Find

def initialize(request, options = {})
@http_client = request
@http_request_parameters = Hashie::Mash.new(options)
end

private

attr_reader :http_client, :http_request_parameters
end
end
end
end
36 changes: 36 additions & 0 deletions lib/tankard/api/base/page_finders.rb
Original file line number Diff line number Diff line change
@@ -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
3 changes: 1 addition & 2 deletions lib/tankard/api/beer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -144,8 +144,7 @@ def params(options = {})

private

attr_reader :http_client
attr_reader :http_request_parameters
attr_reader :http_client, :http_request_parameters

def http_request_uri
@request_endpoint = "/#{@http_request_parameters.delete(:endpoint)}" if @http_request_parameters.endpoint?
Expand Down
49 changes: 19 additions & 30 deletions lib/tankard/api/beers.rb
Original file line number Diff line number Diff line change
@@ -1,25 +1,21 @@
require 'hashie'
require 'tankard/api/utils/page_finders'
require 'tankard/api/base/page_finders'

module Tankard
module Api
# Access for the /beers route on brewerydb
#
# @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
Expand Down Expand Up @@ -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
Expand Down
24 changes: 10 additions & 14 deletions lib/tankard/api/category.rb
Original file line number Diff line number Diff line change
@@ -1,24 +1,18 @@
require 'tankard/api/utils/find'
require 'tankard/api/base/find'

module Tankard
module Api
# Access for the /category/:id route on brewerydb
#
# @see http://www.brewerydb.com/developers/docs-endpoint/category_index
# @author Matthew Shafer
class Category
include Tankard::Api::Utils::Find

# Initializes a new object
class Category < Tankard::Api::Base::Find
# @!method initialize(request, options = {})
# Initializes a new object
#
# @param request [Tankard::Request]
# @param options [Hash]
# @return [Tankard::Api::Category]
def initialize(request, options = {})
@http_client = request
@http_request_parameters = options
@route = 'category'
end
# @param request [Tankard::Request]
# @param options [Hash]
# @return [Tankard::Api::Category]

# @!method find(id_or_array, options={})
# Find a single or multiple categories by their id
Expand All @@ -31,7 +25,9 @@ def initialize(request, options = {})

private

attr_reader :http_client, :http_request_parameters, :route
def route
'category'
end
end
end
end
47 changes: 15 additions & 32 deletions lib/tankard/api/search.rb
Original file line number Diff line number Diff line change
@@ -1,26 +1,20 @@
require 'hashie'
require 'tankard/api/utils/page_finders'
require 'tankard/api/base/page_finders'

module Tankard
module Api
# Access for the /search route on brewerydb
#
# @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
#
Expand All @@ -44,25 +38,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
#
Expand Down Expand Up @@ -110,9 +96,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'
Expand Down

0 comments on commit 4e7ef5a

Please sign in to comment.