tankard 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: caf2e4adbd1c27dad9227737cec3b9ccb7947d4d
4
- data.tar.gz: ce3dbc3b145c38afdcb37c80472ac042d121269d
3
+ metadata.gz: 6aa50daed58d6eec35118b8f2d8c3849ed224c01
4
+ data.tar.gz: f965bcf8557b59391b73d86fcaec0d9ed7c47113
5
5
  SHA512:
6
- metadata.gz: 4734b1c05ec5529b9af9105c70308aacf74a5cdd04b76e570c461beb2775ff2a430ec1a3947f64b37d7a065bae75500e91b13e17d42aa233276080d4ff597b72
7
- data.tar.gz: 1b27b4d244bb37e09453d9908d8fd91667244f47a5b22de60fe9f36ca89d68aa4128f127795574596811f960aa30740b23dae2b99aea8e7d40f4eb9c360a1575
6
+ metadata.gz: f8eb6fa746869c8e816f5e643b534dbbf411018825e566c5a0935360804fa763aa008cf0b96e2b84fa71cff92bb67da90221d06bee22ef2b134f9f790117ccd7
7
+ data.tar.gz: f0045e571b37fd5f651f5cb38ec598bd172b771844a20af09b74225ccf48f72748168823629fa9781854c9e1dddc3f802e3fa895d4d010af85d396817f77b74c
@@ -0,0 +1,15 @@
1
+ AllCops:
2
+ Includes:
3
+ - 'Gemfile'
4
+ - 'Rakefile'
5
+ - 'tankard.gemspec'
6
+
7
+ AccessModifierIndentation:
8
+ EnforcedStyle: outdent
9
+ EmptyLinesAroundBody:
10
+ Enabled: false
11
+ LineLength:
12
+ Enabled: false
13
+ MethodLength:
14
+ CountComments: false # count full line comments?
15
+ Max: 10
@@ -1,15 +1,20 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - jruby-19mode
4
- - rbx-19mode
4
+ - rbx-2.0.0
5
+ - rbx-2.1.1
6
+ - rbx-2.2.6
5
7
  - 1.9.3
6
8
  - 2.0.0
9
+ - 2.1.0
10
+ - 2.1.1
7
11
  - ruby-head
8
12
  - jruby-head
9
13
  jdk:
10
14
  - openjdk6
11
15
  - openjdk7
12
16
  - oraclejdk7
17
+ - oraclejdk8
13
18
  matrix:
14
19
  allow_failures:
15
20
  - rvm: ruby-head
@@ -19,15 +24,47 @@ matrix:
19
24
  jdk: openjdk7
20
25
  - rvm: 1.9.3
21
26
  jdk: oraclejdk7
27
+ - rvm: 1.9.3
28
+ jdk: oraclejdk8
22
29
  - rvm: 2.0.0
23
30
  jdk: openjdk7
24
31
  - rvm: 2.0.0
25
32
  jdk: oraclejdk7
33
+ - rvm: 2.0.0
34
+ jdk: oraclejdk8
35
+ - rvm: 2.1.0
36
+ jdk: openjdk7
37
+ - rvm: 2.1.0
38
+ jdk: oraclejdk7
39
+ - rvm: 2.1.0
40
+ jdk: oraclejdk8
41
+ - rvm: 2.1.1
42
+ jdk: openjdk7
43
+ - rvm: 2.1.1
44
+ jdk: oraclejdk7
45
+ - rvm: 2.1.1
46
+ jdk: oraclejdk8
26
47
  - rvm: ruby-head
27
48
  jdk: openjdk7
28
49
  - rvm: ruby-head
29
50
  jdk: oraclejdk7
30
- - rvm: rbx-19mode
51
+ - rvm: ruby-head
52
+ jdk: oraclejdk8
53
+ - rvm: rbx-2.0.0
54
+ jdk: openjdk7
55
+ - rvm: rbx-2.0.0
56
+ jdk: oraclejdk7
57
+ - rvm: rbx-2.0.0
58
+ jdk: oraclejdk8
59
+ - rvm: rbx-2.1.1
31
60
  jdk: openjdk7
32
- - rvm: rbx-19mode
33
- jdk: oraclejdk7
61
+ - rvm: rbx-2.1.1
62
+ jdk: oraclejdk7
63
+ - rvm: rbx-2.1.1
64
+ jdk: oraclejdk8
65
+ - rvm: rbx-2.2.6
66
+ jdk: openjdk7
67
+ - rvm: rbx-2.2.6
68
+ jdk: oraclejdk7
69
+ - rvm: rbx-2.2.6
70
+ jdk: oraclejdk8
@@ -1,3 +1,10 @@
1
+ ## v0.2.0 (03/28/14)
2
+ * Fixed Rspec deprecation's
3
+ * Relaxed strictness of required gem's
4
+ * Refactored a significant amount of the gem
5
+ * Allow reusing of a query
6
+ * Test gem against more ruby interpreters
7
+
1
8
  ## v0.1.0 (05/15/2013)
2
9
  * Add params method to beers. Allows passing additional parameters in an additional way.
3
10
  * Add params method to beer. Allows passing additional parameters in an additional way.
@@ -12,4 +19,4 @@
12
19
 
13
20
  ## v0.0.1
14
21
  * Support for querying a beer
15
- * Support for querying a list of beers
22
+ * Support for querying a list of beers
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task default: :spec
6
+ task default: :spec
@@ -1,9 +1,12 @@
1
- require "tankard/version"
2
- require "tankard/configuration"
3
- require "tankard/error"
4
- require "tankard/client"
5
- require "atomic"
1
+ require 'tankard/version'
2
+ require 'tankard/configuration'
3
+ require 'tankard/error'
4
+ require 'tankard/client'
5
+ require 'atomic'
6
6
 
7
+ # Sets up and delegates 'most' method calls to the Tankard Client
8
+ #
9
+ # @author Matthew Shafer
7
10
  module Tankard
8
11
  @client = ::Atomic.new
9
12
 
@@ -11,23 +14,23 @@ module Tankard
11
14
  include Configuration
12
15
 
13
16
  def client
14
- @client.compare_and_swap(nil, Tankard::Client.new(credentials)) unless @client.value
17
+ @client.compare_and_swap(nil, Tankard::Client.new(credentials))
15
18
  @client.value
16
19
  end
17
20
 
18
21
  def respond_to?(method)
19
- return client.respond_to?(method)
22
+ client.respond_to?(method)
20
23
  end
21
24
 
22
- private
25
+ private
23
26
 
24
- def method_missing(method_name, *args, &block)
25
- return super unless client.respond_to?(method_name)
26
- client.send(method_name, *args, &block)
27
- end
27
+ def method_missing(method_name, *args, &block)
28
+ return super unless client.respond_to?(method_name)
29
+ client.send(method_name, *args, &block)
30
+ end
28
31
 
29
- def reset_client
30
- @client.value = nil
31
- end
32
+ def reset_client
33
+ @client.value = nil
34
+ end
32
35
  end
33
36
  end
@@ -1,5 +1,4 @@
1
1
  require 'hashie'
2
- require 'tankard/api/request/get'
3
2
  require 'tankard/api/utils/page_finders'
4
3
  require 'tankard/api/utils/find'
5
4
 
@@ -10,7 +9,6 @@ module Tankard
10
9
  # @see http://www.brewerydb.com/developers/docs-endpoint/beer_index
11
10
  # @author Matthew Shafer
12
11
  class Beer
13
- include Tankard::Api::Request::Get
14
12
  include Tankard::Api::Utils::PageFinders
15
13
  include Tankard::Api::Utils::Find
16
14
  # @!parse include ::Enumerable
@@ -20,9 +18,9 @@ module Tankard
20
18
  # @param request [Tankard::Request]
21
19
  # @param options [Hash]
22
20
  # @return [Tankard::Api::Beer]
23
- def initialize(request, options={})
24
- @request = request
25
- @options = Hashie::Mash.new(options)
21
+ def initialize(request, options = {})
22
+ @http_client = request
23
+ @http_request_parameters = Hashie::Mash.new(options)
26
24
  end
27
25
 
28
26
  # @!method find(id_or_array, options={})
@@ -49,7 +47,7 @@ module Tankard
49
47
  # @param beer_id [String]
50
48
  # @return [self] returns itself
51
49
  def id(beer_id)
52
- @options.id = beer_id
50
+ @http_request_parameters.id = beer_id
53
51
  self
54
52
  end
55
53
 
@@ -57,7 +55,7 @@ module Tankard
57
55
  #
58
56
  # @return [self] returns itself
59
57
  def breweries
60
- @options.endpoint = "breweries"
58
+ @http_request_parameters.endpoint = 'breweries'
61
59
  self
62
60
  end
63
61
 
@@ -65,7 +63,7 @@ module Tankard
65
63
  #
66
64
  # @return [self] returns itself
67
65
  def events
68
- @options.endpoint = "events"
66
+ @http_request_parameters.endpoint = 'events'
69
67
  self
70
68
  end
71
69
 
@@ -73,7 +71,7 @@ module Tankard
73
71
  #
74
72
  # @return [self] returns itself
75
73
  def ingredients
76
- @options.endpoint = "ingredients"
74
+ @http_request_parameters.endpoint = 'ingredients'
77
75
  self
78
76
  end
79
77
 
@@ -81,7 +79,7 @@ module Tankard
81
79
  #
82
80
  # @return [self] returns itself
83
81
  def social_accounts
84
- @options.endpoint = "socialaccounts"
82
+ @http_request_parameters.endpoint = 'socialaccounts'
85
83
  self
86
84
  end
87
85
 
@@ -89,7 +87,7 @@ module Tankard
89
87
  #
90
88
  # @return [self] returns itself
91
89
  def variations
92
- @options.endpoint = "variations"
90
+ @http_request_parameters.endpoint = 'variations'
93
91
  self
94
92
  end
95
93
 
@@ -97,41 +95,34 @@ module Tankard
97
95
  #
98
96
  # @param options [Hash]
99
97
  # @return [self] returns itself
100
- def params(options={})
101
- options.each_pair do |key,value|
102
- @options[key] = value
98
+ def params(options = {})
99
+ options.each_pair do |key, value|
100
+ @http_request_parameters[key] = value
103
101
  end
104
102
  self
105
103
  end
106
104
 
107
- private
105
+ private
108
106
 
109
- def http_request_uri
110
- endpoint = "#{route}/#{raise_if_no_id_in_options}"
107
+ attr_reader :http_client
108
+ attr_reader :http_request_parameters
111
109
 
112
- if @options.endpoint?
113
- endpoint += "/#{@options.delete(:endpoint)}"
114
- end
115
-
116
- endpoint
117
- end
118
-
119
- def raise_if_no_id_in_options
120
- raise Tankard::Error::MissingParameter, "No Beer ID is set" unless @options.id?
121
- @options.delete(:id)
122
- end
123
-
124
- def route
125
- "beer"
126
- end
110
+ def http_request_uri
111
+ @request_endpoint = "/#{@http_request_parameters.delete(:endpoint)}" if @http_request_parameters.endpoint?
112
+ endpoint = "#{route}/#{raise_if_no_id_in_options}"
113
+ endpoint += @request_endpoint if @request_endpoint
114
+ endpoint
115
+ end
127
116
 
128
- def http_client
129
- @request
130
- end
117
+ def raise_if_no_id_in_options
118
+ @beer_id = @http_request_parameters.delete(:id) if @http_request_parameters.id?
119
+ fail Tankard::Error::MissingParameter, 'No Beer ID is set' unless @beer_id
120
+ @beer_id
121
+ end
131
122
 
132
- def http_request_parameters
133
- @options
134
- end
123
+ def route
124
+ 'beer'
125
+ end
135
126
  end
136
127
  end
137
- end
128
+ end
@@ -18,9 +18,9 @@ module Tankard
18
18
  # @param request [Tankard::Request]
19
19
  # @param options [Hash]
20
20
  # @return [Tankard::Api::Beers]
21
- def initialize(request, options={})
22
- @request = request
23
- @options = Hashie::Mash.new(options)
21
+ def initialize(request, options = {})
22
+ @http_client = request
23
+ @http_request_parameters = Hashie::Mash.new(options)
24
24
  end
25
25
 
26
26
  # @!method each(&block)
@@ -37,7 +37,7 @@ module Tankard
37
37
  # @param beer_name [String]
38
38
  # @return [self] returns itself
39
39
  def name(beer_name)
40
- @options[:name] = beer_name
40
+ @http_request_parameters.name = beer_name
41
41
  self
42
42
  end
43
43
 
@@ -46,7 +46,7 @@ module Tankard
46
46
  # @param number [Integer]
47
47
  # @return [self] returns itself
48
48
  def page(number)
49
- @options[:p] = number
49
+ @http_request_parameters.p = number
50
50
  self
51
51
  end
52
52
 
@@ -54,26 +54,21 @@ module Tankard
54
54
  #
55
55
  # @param options [Hash]
56
56
  # @return [self] returns itself
57
- def params(options={})
58
- options.each_pair do |key,value|
59
- @options[key] = value
57
+ def params(options = {})
58
+ options.each_pair do |key, value|
59
+ @http_request_parameters[key] = value
60
60
  end
61
61
  self
62
62
  end
63
63
 
64
- private
64
+ private
65
65
 
66
- def http_request_uri
67
- "beers"
68
- end
69
-
70
- def http_client
71
- @request
72
- end
66
+ attr_reader :http_client
67
+ attr_reader :http_request_parameters
73
68
 
74
- def http_request_parameters
75
- @options
76
- end
69
+ def http_request_uri
70
+ 'beers'
71
+ end
77
72
  end
78
73
  end
79
- end
74
+ end
@@ -1,27 +1,23 @@
1
1
  module Tankard
2
2
  module Api
3
3
  module Request
4
+ # Helper for GET requests
5
+ #
6
+ # @author Matthew Shafer
4
7
  module Get
5
8
 
6
- private
9
+ private
7
10
 
8
- def request_data_with_nil_on_http_error(request_object, uri, options)
9
- begin
10
- request_data(request_object, uri, options)
11
- rescue Tankard::Error::HttpError
12
- nil
13
- end
14
- end
11
+ def request_data_with_nil_on_http_error(request_object, uri, options)
12
+ get_request(request_object, uri, options)['data']
13
+ rescue Tankard::Error::HttpError
14
+ nil
15
+ end
15
16
 
16
- # break up the request methods into smaller pieces
17
- def request_data(request_object, uri, options)
18
- get_request(request_object, uri, options)["data"]
19
- end
20
-
21
- def get_request(request_object, uri, options)
22
- request_object.get(uri, options)
23
- end
17
+ def get_request(request_object, uri, options)
18
+ request_object.get(uri, options)
19
+ end
24
20
  end
25
21
  end
26
22
  end
27
- end
23
+ end
@@ -17,9 +17,9 @@ module Tankard
17
17
  # @param request [Tankard::Request]
18
18
  # @param options [Hash]
19
19
  # @return [Tankard::Api::Search]
20
- def initialize(request, options={})
21
- @request = request
22
- @options = Hashie::Mash.new(options)
20
+ def initialize(request, options = {})
21
+ @http_client = request
22
+ @http_request_parameters = Hashie::Mash.new(options)
23
23
  end
24
24
 
25
25
  # Calls the given block once for each result
@@ -40,7 +40,7 @@ module Tankard
40
40
  # @param search_query [String]
41
41
  # @return [self] returns itself
42
42
  def query(search_query)
43
- @options.q = search_query
43
+ @http_request_parameters.q = search_query
44
44
  self
45
45
  end
46
46
 
@@ -49,7 +49,7 @@ module Tankard
49
49
  # @param number [Integer]
50
50
  # @return [self] returns itself
51
51
  def page(number)
52
- @options.p = number
52
+ @http_request_parameters.p = number
53
53
  self
54
54
  end
55
55
 
@@ -57,9 +57,9 @@ module Tankard
57
57
  #
58
58
  # @param options [Hash]
59
59
  # @return [self] returns itself
60
- def params(options={})
61
- options.each_pair do |key,value|
62
- @options[key] = value
60
+ def params(options = {})
61
+ options.each_pair do |key, value|
62
+ @http_request_parameters[key] = value
63
63
  end
64
64
  self
65
65
  end
@@ -69,7 +69,7 @@ module Tankard
69
69
  # @param search_type [String]
70
70
  # @return [self] returns itself
71
71
  def type(search_type)
72
- @options.type = search_type
72
+ @http_request_parameters.type = search_type
73
73
  self
74
74
  end
75
75
 
@@ -79,8 +79,8 @@ module Tankard
79
79
  # @param upc_code [Integer]
80
80
  # @return [self] returns itself
81
81
  def upc(upc_code)
82
- @options.code = upc_code
83
- @options.endpoint = "upc"
82
+ @http_request_parameters.code = upc_code
83
+ @http_request_parameters.endpoint = 'upc'
84
84
  self
85
85
  end
86
86
 
@@ -91,42 +91,33 @@ module Tankard
91
91
  # @param longitude [Float]
92
92
  # @return [self] returns itself
93
93
  def geo_point(latitude, longitude)
94
- @options.lat = latitude
95
- @options.lng = longitude
96
- @options.endpoint = "geo/point"
94
+ @http_request_parameters.lat = latitude
95
+ @http_request_parameters.lng = longitude
96
+ @http_request_parameters.endpoint = 'geo/point'
97
97
  self
98
98
  end
99
99
 
100
- private
100
+ private
101
101
 
102
- def http_request_uri
103
- endpoint = "search"
102
+ attr_reader :http_client
103
+ attr_reader :http_request_parameters
104
104
 
105
- if @options.endpoint?
106
- endpoint += "/#{@options.delete(:endpoint)}"
107
- end
108
-
109
- endpoint
110
- end
111
-
112
- def http_client
113
- @request
114
- end
115
-
116
- def http_request_parameters
117
- @options
118
- end
105
+ def http_request_uri
106
+ @request_endpoint = "/#{@http_request_parameters.delete(:endpoint)}" if @http_request_parameters.endpoint?
107
+ endpoint = 'search'
108
+ endpoint += @request_endpoint if @request_endpoint
109
+ endpoint
110
+ end
119
111
 
120
- def raise_if_required_options_not_set
121
- case @options.endpoint
122
- when nil
123
- raise Tankard::Error::MissingParameter, "No search query set" unless @options.q?
124
- when "upc"
125
- raise Tankard::Error::MissingParameter, "missing parameter: code" unless @options.code?
126
- when "geo/point"
127
- raise Tankard::Error::MissingParameter, "missing Parameters: lat, lng" unless @options.lat? && @options.lng?
128
- end
112
+ def raise_if_required_options_not_set
113
+ if @http_request_parameters.endpoint.nil?
114
+ fail Tankard::Error::MissingParameter, 'No search query set' unless @http_request_parameters.q?
115
+ elsif @http_request_parameters.endpoint == 'upc'
116
+ fail Tankard::Error::MissingParameter, 'missing parameter: code' unless @http_request_parameters.code?
117
+ elsif @http_request_parameters.endpoint == 'geo/point'
118
+ fail Tankard::Error::MissingParameter, 'missing Parameters: lat, lng' unless @http_request_parameters.lat? && @http_request_parameters.lng?
129
119
  end
120
+ end
130
121
  end
131
122
  end
132
- end
123
+ end