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 +4 -4
- data/.rubocop.yml +15 -0
- data/.travis.yml +41 -4
- data/CHANGELOG.md +8 -1
- data/Rakefile +3 -3
- data/lib/tankard.rb +18 -15
- data/lib/tankard/api/beer.rb +30 -39
- data/lib/tankard/api/beers.rb +15 -20
- data/lib/tankard/api/request/get.rb +13 -17
- data/lib/tankard/api/search.rb +32 -41
- data/lib/tankard/api/style.rb +19 -23
- data/lib/tankard/api/styles.rb +10 -12
- data/lib/tankard/api/utils/find.rb +15 -12
- data/lib/tankard/api/utils/page_finders.rb +42 -37
- data/lib/tankard/client.rb +10 -6
- data/lib/tankard/configuration.rb +18 -15
- data/lib/tankard/error.rb +4 -1
- data/lib/tankard/request.rb +23 -22
- data/lib/tankard/version.rb +4 -1
- data/spec/shared_examples_for_find.rb +22 -22
- data/spec/spec_helper.rb +2 -2
- data/spec/tankard/api/beer_spec.rb +113 -86
- data/spec/tankard/api/beers_spec.rb +34 -34
- data/spec/tankard/api/search_spec.rb +106 -95
- data/spec/tankard/api/style_spec.rb +102 -21
- data/spec/tankard/api/styles_spec.rb +6 -6
- data/spec/tankard/api/utils/find_spec.rb +10 -10
- data/spec/tankard/api/utils/page_finders_spec.rb +53 -50
- data/spec/tankard/client_spec.rb +42 -42
- data/spec/tankard/request_spec.rb +26 -24
- data/spec/tankard_spec.rb +21 -19
- data/tankard.gemspec +24 -22
- metadata +45 -58
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6aa50daed58d6eec35118b8f2d8c3849ed224c01
|
4
|
+
data.tar.gz: f965bcf8557b59391b73d86fcaec0d9ed7c47113
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8eb6fa746869c8e816f5e643b534dbbf411018825e566c5a0935360804fa763aa008cf0b96e2b84fa71cff92bb67da90221d06bee22ef2b134f9f790117ccd7
|
7
|
+
data.tar.gz: f0045e571b37fd5f651f5cb38ec598bd172b771844a20af09b74225ccf48f72748168823629fa9781854c9e1dddc3f802e3fa895d4d010af85d396817f77b74c
|
data/.rubocop.yml
ADDED
@@ -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
|
data/.travis.yml
CHANGED
@@ -1,15 +1,20 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
3
|
- jruby-19mode
|
4
|
-
- rbx-
|
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:
|
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-
|
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
|
data/CHANGELOG.md
CHANGED
@@ -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
data/lib/tankard.rb
CHANGED
@@ -1,9 +1,12 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
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))
|
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
|
-
|
22
|
+
client.respond_to?(method)
|
20
23
|
end
|
21
24
|
|
22
|
-
|
25
|
+
private
|
23
26
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
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
|
-
|
30
|
-
|
31
|
-
|
32
|
+
def reset_client
|
33
|
+
@client.value = nil
|
34
|
+
end
|
32
35
|
end
|
33
36
|
end
|
data/lib/tankard/api/beer.rb
CHANGED
@@ -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
|
-
@
|
25
|
-
@
|
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
|
-
@
|
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
|
-
@
|
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
|
-
@
|
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
|
-
@
|
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
|
-
@
|
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
|
-
@
|
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
|
-
@
|
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
|
-
|
105
|
+
private
|
108
106
|
|
109
|
-
|
110
|
-
|
107
|
+
attr_reader :http_client
|
108
|
+
attr_reader :http_request_parameters
|
111
109
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
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
|
-
|
129
|
-
|
130
|
-
|
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
|
-
|
133
|
-
|
134
|
-
|
123
|
+
def route
|
124
|
+
'beer'
|
125
|
+
end
|
135
126
|
end
|
136
127
|
end
|
137
|
-
end
|
128
|
+
end
|
data/lib/tankard/api/beers.rb
CHANGED
@@ -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
|
-
@
|
23
|
-
@
|
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
|
-
@
|
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
|
-
@
|
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
|
-
@
|
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
|
-
|
64
|
+
private
|
65
65
|
|
66
|
-
|
67
|
-
|
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
|
-
|
75
|
-
|
76
|
-
|
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
|
-
|
9
|
+
private
|
7
10
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
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
|
-
|
17
|
-
|
18
|
-
|
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
|
data/lib/tankard/api/search.rb
CHANGED
@@ -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
|
-
@
|
22
|
-
@
|
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
|
-
@
|
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
|
-
@
|
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
|
-
@
|
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
|
-
@
|
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
|
-
@
|
83
|
-
@
|
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
|
-
@
|
95
|
-
@
|
96
|
-
@
|
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
|
-
|
100
|
+
private
|
101
101
|
|
102
|
-
|
103
|
-
|
102
|
+
attr_reader :http_client
|
103
|
+
attr_reader :http_request_parameters
|
104
104
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
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
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
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
|