Skip to content

Commit

Permalink
Change beer to use Tankard::Api::Utils::Finders
Browse files Browse the repository at this point in the history
  • Loading branch information
matthewshafer committed May 5, 2013
1 parent d569a07 commit 7aea039
Showing 1 changed file with 5 additions and 14 deletions.
19 changes: 5 additions & 14 deletions lib/tankard/api/beer.rb
Original file line number Diff line number Diff line change
@@ -1,19 +1,21 @@
require 'hashie'
require 'tankard/api/request/get'
require 'tankard/api/utils/finders'

module Tankard
module Api
class Beer
include ::Enumerable
include Tankard::Api::Request::Get
include Tankard::Api::Utils::Finders

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

def each(&block)
find_on_single_page(block)
find_on_single_page(uri_from_options_endpoint, @request, @options, block)
end

def find(beer_id, options={})
Expand Down Expand Up @@ -65,31 +67,20 @@ def params(options={})

private

def request_data_from_options
def uri_from_options_endpoint
endpoint = "beer/#{raise_if_no_id_in_options}"

if @options.endpoint?
endpoint += "/#{@options.delete(:endpoint)}"
end

request_data(@request, endpoint, @options)
endpoint
end

def raise_if_no_id_in_options
raise Tankard::Error::NoBeerId unless @options.id?
@options.delete(:id)
end

def find_on_single_page(block)
data = request_data_from_options
raise Tankard::Error::InvalidResponse unless data

if data.is_a?(Hash)
block.call(data)
else
data.each { |beer| block.call(beer) }
end
end
end
end
end

0 comments on commit 7aea039

Please sign in to comment.