hungrytable 0.0.8 → 1.0.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.
Files changed (42) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +299 -22
  3. data/RELEASE_NOTES.md +16 -0
  4. data/lib/hungrytable/api_health_monitor.rb +106 -0
  5. data/lib/hungrytable/circuit_breaker.rb +177 -0
  6. data/lib/hungrytable/config.rb +38 -16
  7. data/lib/hungrytable/enhanced_errors.rb +127 -0
  8. data/lib/hungrytable/errors.rb +36 -0
  9. data/lib/hungrytable/get_request.rb +17 -6
  10. data/lib/hungrytable/post_request.rb +17 -6
  11. data/lib/hungrytable/request.rb +42 -5
  12. data/lib/hungrytable/request_extensions.rb +17 -4
  13. data/lib/hungrytable/request_header.rb +25 -25
  14. data/lib/hungrytable/reservation_cancel.rb +19 -5
  15. data/lib/hungrytable/reservation_make.rb +30 -9
  16. data/lib/hungrytable/reservation_status.rb +56 -0
  17. data/lib/hungrytable/restaurant.rb +43 -31
  18. data/lib/hungrytable/restaurant_search.rb +63 -34
  19. data/lib/hungrytable/restaurant_slotlock.rb +32 -10
  20. data/lib/hungrytable/version.rb +3 -1
  21. data/lib/hungrytable.rb +117 -65
  22. metadata +43 -179
  23. data/.gitignore +0 -6
  24. data/.rvmrc +0 -1
  25. data/Gemfile +0 -5
  26. data/Guardfile +0 -16
  27. data/Rakefile +0 -8
  28. data/hungrytable.gemspec +0 -37
  29. data/test/restaurant_get_details_result.json +0 -6
  30. data/test/restaurant_search_result.json +0 -7
  31. data/test/test_helper.rb +0 -18
  32. data/test/unit/config_test.rb +0 -43
  33. data/test/unit/get_request_test.rb +0 -0
  34. data/test/unit/hungrytable/user_test.rb +0 -28
  35. data/test/unit/post_request_test.rb +0 -0
  36. data/test/unit/request_test.rb +0 -0
  37. data/test/unit/reservation_cancel_test.rb +0 -0
  38. data/test/unit/reservation_make_test.rb +0 -0
  39. data/test/unit/restaurant_search_test.rb +0 -0
  40. data/test/unit/restaurant_slotlock_test.rb +0 -0
  41. data/test/unit/restaurant_test.rb +0 -39
  42. data/test/user_login_result.json +0 -6
metadata CHANGED
@@ -1,196 +1,79 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hungrytable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
5
- prerelease:
4
+ version: 1.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - David Chapman
9
- - Nicholas Fine
10
- autorequire:
11
8
  bindir: bin
12
9
  cert_chain: []
13
- date: 2013-02-08 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
14
11
  dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: json
17
- requirement: !ruby/object:Gem::Requirement
18
- none: false
19
- requirements:
20
- - - ~>
21
- - !ruby/object:Gem::Version
22
- version: 1.7.1
23
- type: :runtime
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
- requirements:
28
- - - ~>
29
- - !ruby/object:Gem::Version
30
- version: 1.7.1
31
12
  - !ruby/object:Gem::Dependency
32
13
  name: activesupport
33
14
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
- requirements:
36
- - - ! '>='
37
- - !ruby/object:Gem::Version
38
- version: '0'
39
- type: :runtime
40
- prerelease: false
41
- version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
- requirements:
44
- - - ! '>='
45
- - !ruby/object:Gem::Version
46
- version: '0'
47
- - !ruby/object:Gem::Dependency
48
- name: i18n
49
- requirement: !ruby/object:Gem::Requirement
50
- none: false
51
15
  requirements:
52
- - - ! '>='
16
+ - - ">="
53
17
  - !ruby/object:Gem::Version
54
- version: '0'
55
- type: :runtime
56
- prerelease: false
57
- version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
- requirements:
60
- - - ! '>='
18
+ version: '6.0'
19
+ - - "<"
61
20
  - !ruby/object:Gem::Version
62
- version: '0'
63
- - !ruby/object:Gem::Dependency
64
- name: curb
65
- requirement: !ruby/object:Gem::Requirement
66
- none: false
67
- requirements:
68
- - - ! '>='
69
- - !ruby/object:Gem::Version
70
- version: '0'
21
+ version: '8.0'
71
22
  type: :runtime
72
23
  prerelease: false
73
24
  version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
76
- - - ! '>='
77
- - !ruby/object:Gem::Version
78
- version: '0'
79
- - !ruby/object:Gem::Dependency
80
- name: rake
81
- requirement: !ruby/object:Gem::Requirement
82
- none: false
83
- requirements:
84
- - - ! '>='
85
- - !ruby/object:Gem::Version
86
- version: '0'
87
- type: :development
88
- prerelease: false
89
- version_requirements: !ruby/object:Gem::Requirement
90
- none: false
91
- requirements:
92
- - - ! '>='
93
- - !ruby/object:Gem::Version
94
- version: '0'
95
- - !ruby/object:Gem::Dependency
96
- name: minitest
97
- requirement: !ruby/object:Gem::Requirement
98
- none: false
99
- requirements:
100
- - - ! '>='
101
- - !ruby/object:Gem::Version
102
- version: '0'
103
- type: :development
104
- prerelease: false
105
- version_requirements: !ruby/object:Gem::Requirement
106
- none: false
107
- requirements:
108
- - - ! '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: minitest-reporters
113
- requirement: !ruby/object:Gem::Requirement
114
- none: false
115
- requirements:
116
- - - ! '>='
117
- - !ruby/object:Gem::Version
118
- version: '0'
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- none: false
123
25
  requirements:
124
- - - ! '>='
26
+ - - ">="
125
27
  - !ruby/object:Gem::Version
126
- version: '0'
127
- - !ruby/object:Gem::Dependency
128
- name: mocha
129
- requirement: !ruby/object:Gem::Requirement
130
- none: false
131
- requirements:
132
- - - ! '>='
28
+ version: '6.0'
29
+ - - "<"
133
30
  - !ruby/object:Gem::Version
134
- version: '0'
135
- type: :development
136
- prerelease: false
137
- version_requirements: !ruby/object:Gem::Requirement
138
- none: false
139
- requirements:
140
- - - ! '>='
141
- - !ruby/object:Gem::Version
142
- version: '0'
31
+ version: '8.0'
143
32
  - !ruby/object:Gem::Dependency
144
- name: pry
33
+ name: http
145
34
  requirement: !ruby/object:Gem::Requirement
146
- none: false
147
35
  requirements:
148
- - - ! '>='
36
+ - - "~>"
149
37
  - !ruby/object:Gem::Version
150
- version: '0'
151
- type: :development
38
+ version: '5.0'
39
+ type: :runtime
152
40
  prerelease: false
153
41
  version_requirements: !ruby/object:Gem::Requirement
154
- none: false
155
42
  requirements:
156
- - - ! '>='
43
+ - - "~>"
157
44
  - !ruby/object:Gem::Version
158
- version: '0'
45
+ version: '5.0'
159
46
  - !ruby/object:Gem::Dependency
160
- name: webmock
47
+ name: oauth
161
48
  requirement: !ruby/object:Gem::Requirement
162
- none: false
163
49
  requirements:
164
- - - ! '>='
50
+ - - "~>"
165
51
  - !ruby/object:Gem::Version
166
- version: '0'
167
- type: :development
52
+ version: '1.1'
53
+ type: :runtime
168
54
  prerelease: false
169
55
  version_requirements: !ruby/object:Gem::Requirement
170
- none: false
171
56
  requirements:
172
- - - ! '>='
57
+ - - "~>"
173
58
  - !ruby/object:Gem::Version
174
- version: '0'
175
- description: Gem to interact with OpenTable's REST API
59
+ version: '1.1'
60
+ description: A Ruby gem providing a clean, object-oriented interface to interact with
61
+ the OpenTable REST API for restaurant reservations
176
62
  email:
177
- - david@isotope11.com
178
- - nicholas.fine@gmail.com
63
+ - dchapman1988@gmail.com
179
64
  executables: []
180
65
  extensions: []
181
66
  extra_rdoc_files: []
182
67
  files:
183
- - .gitignore
184
- - .rvmrc
185
- - Gemfile
186
- - Guardfile
187
68
  - LICENSE
188
69
  - README.md
189
70
  - RELEASE_NOTES.md
190
- - Rakefile
191
- - hungrytable.gemspec
192
71
  - lib/hungrytable.rb
72
+ - lib/hungrytable/api_health_monitor.rb
73
+ - lib/hungrytable/circuit_breaker.rb
193
74
  - lib/hungrytable/config.rb
75
+ - lib/hungrytable/enhanced_errors.rb
76
+ - lib/hungrytable/errors.rb
194
77
  - lib/hungrytable/get_request.rb
195
78
  - lib/hungrytable/post_request.rb
196
79
  - lib/hungrytable/request.rb
@@ -203,48 +86,29 @@ files:
203
86
  - lib/hungrytable/restaurant_search.rb
204
87
  - lib/hungrytable/restaurant_slotlock.rb
205
88
  - lib/hungrytable/version.rb
206
- - test/restaurant_get_details_result.json
207
- - test/restaurant_search_result.json
208
- - test/test_helper.rb
209
- - test/unit/config_test.rb
210
- - test/unit/get_request_test.rb
211
- - test/unit/hungrytable/user_test.rb
212
- - test/unit/post_request_test.rb
213
- - test/unit/request_test.rb
214
- - test/unit/reservation_cancel_test.rb
215
- - test/unit/reservation_make_test.rb
216
- - test/unit/restaurant_search_test.rb
217
- - test/unit/restaurant_slotlock_test.rb
218
- - test/unit/restaurant_test.rb
219
- - test/user_login_result.json
220
- homepage: http://www.isotope11.com/
221
- licenses: []
222
- post_install_message:
89
+ homepage: https://github.com/dchapman1988/hungrytable
90
+ licenses:
91
+ - MIT
92
+ metadata:
93
+ bug_tracker_uri: https://github.com/dchapman1988/hungrytable/issues
94
+ changelog_uri: https://github.com/dchapman1988/hungrytable/blob/master/RELEASE_NOTES.md
95
+ source_code_uri: https://github.com/dchapman1988/hungrytable
96
+ rubygems_mfa_required: 'true'
223
97
  rdoc_options: []
224
98
  require_paths:
225
99
  - lib
226
100
  required_ruby_version: !ruby/object:Gem::Requirement
227
- none: false
228
101
  requirements:
229
- - - ! '>='
102
+ - - ">="
230
103
  - !ruby/object:Gem::Version
231
- version: '0'
232
- segments:
233
- - 0
234
- hash: -2381708931851299882
104
+ version: 3.0.0
235
105
  required_rubygems_version: !ruby/object:Gem::Requirement
236
- none: false
237
106
  requirements:
238
- - - ! '>='
107
+ - - ">="
239
108
  - !ruby/object:Gem::Version
240
109
  version: '0'
241
- segments:
242
- - 0
243
- hash: -2381708931851299882
244
110
  requirements: []
245
- rubyforge_project: hungrytable
246
- rubygems_version: 1.8.25
247
- signing_key:
248
- specification_version: 3
249
- summary: Gem to interact with OpenTable's REST API
111
+ rubygems_version: 3.6.9
112
+ specification_version: 4
113
+ summary: Ruby client for the OpenTable REST API
250
114
  test_files: []
data/.gitignore DELETED
@@ -1,6 +0,0 @@
1
- *.gem
2
- .bundle
3
- Gemfile.lock
4
- pkg/*
5
- *.sw*
6
- .open_table
data/.rvmrc DELETED
@@ -1 +0,0 @@
1
- rvm ruby-1.9.3-p385@hungrytable --create
data/Gemfile DELETED
@@ -1,5 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- # Specify your gem's dependencies in hungrytable.gemspec
4
- gemspec
5
-
data/Guardfile DELETED
@@ -1,16 +0,0 @@
1
- # A sample Guardfile
2
- # More info at https://github.com/guard/guard#readme
3
-
4
- notification :libnotify
5
-
6
- guard 'minitest' do
7
- # with Minitest::Unit
8
- watch(%r|^test/(.*)_test\.rb|)
9
- watch(%r|^lib/(.*)/([^/]+)\.rb|) { |m| "test/unit/#{m[1]}/#{m[2]}_test.rb" }
10
- watch(%r|^test/test_helper\.rb|) { "test" }
11
-
12
- # with Minitest::Spec
13
- # watch(%r|^spec/(.*)_spec\.rb|)
14
- # watch(%r|^lib/(.*)\.rb|) { |m| "spec/#{m[1]}_spec.rb" }
15
- # watch(%r|^spec/spec_helper\.rb|) { "spec" }
16
- end
data/Rakefile DELETED
@@ -1,8 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require 'rake/testtask'
3
-
4
- Rake::TestTask.new do |t|
5
- t.libs << 'lib'
6
- t.libs << 'test'
7
- t.pattern = 'test/**/*_test.rb'
8
- end
data/hungrytable.gemspec DELETED
@@ -1,37 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "hungrytable/version"
4
-
5
- Gem::Specification.new do |s|
6
- s.name = "hungrytable"
7
- s.version = Hungrytable::VERSION
8
- s.authors = ["David Chapman", "Nicholas Fine"]
9
- s.email = ["david@isotope11.com", 'nicholas.fine@gmail.com']
10
- s.homepage = "http://www.isotope11.com/"
11
- s.summary = %q{Gem to interact with OpenTable's REST API}
12
- s.description = %q{Gem to interact with OpenTable's REST API}
13
-
14
- s.rubyforge_project = "hungrytable"
15
-
16
- s.files = `git ls-files`.split("\n")
17
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
- s.require_paths = ["lib"]
20
-
21
- # specify any dependencies here; for example:
22
- # s.add_development_dependency "rspec"
23
- # s.add_runtime_dependency "rest-client"
24
-
25
- s.add_runtime_dependency 'json', '~> 1.7.1'
26
- s.add_runtime_dependency 'activesupport'
27
- s.add_runtime_dependency 'i18n'
28
- s.add_runtime_dependency 'curb'
29
-
30
- s.add_development_dependency 'rake'
31
- s.add_development_dependency 'minitest'
32
- s.add_development_dependency 'minitest-reporters'
33
- s.add_development_dependency 'mocha'
34
- s.add_development_dependency 'pry'
35
- s.add_development_dependency 'webmock'
36
- end
37
-
@@ -1,6 +0,0 @@
1
- HTTP/1.1 200 OK
2
- Status: 200
3
- Vary: Accept-Encoding
4
- Content-Type: application/json
5
-
6
- { "RestaurantDetailsResults": {"ns:Address": null, "ns:City": "799 Market Street", "ns:ErrorID": "0", "ns:ErrorMessage": null, "ns:ImageLink": null, "ns:Latitude": null, "ns:Longitude": null, "ns:MenuURL": null, "ns:MetroID": "1", "ns:MetroName": "Demoland", "ns:NeighborhoodName": "Devland", "ns:Parking": "No", "ns:ParkingDetails": null, "ns:Phone": "4157897485", "ns:PostalCode": "94103", "ns:PriceRange": "$30 and under", "ns:PrimaryFoodType": "American", "ns:ReserveUrl": "1759B23C", "ns:RestaurantDescription": "Coming Soon!", "ns:RestaurantID": "82591", "ns:RestaurantName": "OTConnect-Partner-Rest1", "ns:State": "CA", "ns:Url": null, "xmlns:ns": "com.opentable.webservices.v2" }}
@@ -1,7 +0,0 @@
1
- HTTP/1.1 200 OK
2
- Status: 200
3
- Vary: Accept-Encoding
4
- Content-Type: application/json
5
-
6
- {"SearchResults": {"ns:CuisineType": "American", "ns:EarlyPoints": "100", "ns:EarlySecurityID": "1113043844", "ns:EarlyTime": "5/16/2012 1:45:00 PM", "ns:ErrorID": "0", "ns:ErrorMessage": null, "ns:ExactPoints": "100", "ns:ExactSecurityID": "1113043836", "ns:ExactTime": "5/16/2012 2:00:00 PM", "ns:ImageExists": "0", "ns:Latitude": null, "ns:Longitude": null, "ns:NeighborhoodName": "Devland", "ns:Price": "$$", "ns:RestaurantID": "82591", "ns:RestaurantName": "OTConnect-Partner-Rest1", "ns:ResultsKey": "z0OlOTkH2NbY%2bq7bjf7Lxw%3d%3d", "xmlns:ns": "com.opentable.webservices.v2" }}
7
-
data/test/test_helper.rb DELETED
@@ -1,18 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'minitest/reporters'
3
-
4
- require 'ostruct'
5
- require 'pry'
6
- require 'webmock'
7
- include WebMock::API
8
-
9
-
10
- # Load support files
11
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
12
-
13
- # Set up minitest
14
- MiniTest::Unit.runner = MiniTest::SuiteRunner.new
15
- MiniTest::Unit.runner.reporters << MiniTest::Reporters::SpecReporter.new
16
-
17
- require 'mocha'
18
- require File.expand_path("../../lib/hungrytable.rb", __FILE__)
@@ -1,43 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe Hungrytable::Config do
4
- describe 'when the correct ENV vars are not set' do
5
- before do
6
- ENV['OT_PARTNER_ID'] = nil
7
- ENV['OT_OAUTH_KEY'] = nil
8
- ENV['OT_OAUTH_SECRET'] = nil
9
- end
10
-
11
- it 'raises a HungrytableError' do
12
- [:partner_id, :oauth_key, :oauth_secret].each do |meth|
13
- -> {Hungrytable::Config.send meth}.must_raise Hungrytable::HungrytableError
14
- end
15
- end
16
- end
17
-
18
- describe 'when the ENV vars are set' do
19
- before do
20
- ENV['OT_PARTNER_ID'] = 'foo'
21
- ENV['OT_OAUTH_KEY'] = 'bar'
22
- ENV['OT_OAUTH_SECRET'] = 'baz'
23
- end
24
-
25
- describe '.partner_id' do
26
- it 'returns the value for OT_PARTNER_ID' do
27
- Hungrytable::Config.partner_id.must_equal 'foo'
28
- end
29
- end
30
-
31
- describe '.oauth_key' do
32
- it 'returns the value for OT_OAUTH_KEY' do
33
- Hungrytable::Config.oauth_key.must_equal 'bar'
34
- end
35
- end
36
-
37
- describe '.oauth_secret' do
38
- it 'returns the value for OT_OAUTH_SECRET' do
39
- Hungrytable::Config.oauth_secret.must_equal 'baz'
40
- end
41
- end
42
- end
43
- end
File without changes
@@ -1,28 +0,0 @@
1
- =begin
2
- require 'test_helper'
3
-
4
- describe Hungrytable::User do
5
- subject { Hungrytable::User }
6
-
7
- it 'should be a class' do
8
- subject.class.must_be_kind_of Class
9
- end
10
-
11
- %w{ login }.each do |meth|
12
- it "should respond to #{meth}" do
13
- assert subject.new.respond_to?(meth.to_sym), true
14
- end
15
- end
16
-
17
- describe 'users' do
18
- before do
19
- stub_request(:get, /.*secure.opentable.com\/api\/otapi_v2.ashx\/user.*/).to_return(File.new('./test/user_login_result.json'), :status => 200)
20
- @user = subject.new
21
- end
22
- it 'should be able to login' do
23
- response = @user.login({ email: 'bob@webservices.com', password: 'password' })
24
- response.must_be_kind_of Hash
25
- end
26
- end
27
- end
28
- =end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,39 +0,0 @@
1
- require 'test_helper'
2
- require 'pry'
3
-
4
- describe Hungrytable::Restaurant do
5
- before do
6
- @mock_requester = mock('GetRequest')
7
- @mock_request = mock('get')
8
- @mock_requester.expects(:new).returns(@mock_request)
9
- @mock_request.stubs(:parsed_response).returns({"RestaurantDetailsResults" => {}})
10
- ENV['OT_PARTNER_ID'] = 'foo'
11
- @restaurant = Hungrytable::Restaurant.new(1, requester: @mock_requester)
12
- end
13
- %w(
14
- address
15
- city
16
- error_ID
17
- error_message
18
- image_link
19
- latitude
20
- longitude
21
- metro_name
22
- neighborhood_name
23
- parking
24
- parking_details
25
- phone
26
- postal_code
27
- price_range
28
- primary_food_type
29
- restaurant_description
30
- restaurant_ID
31
- restaurant_name
32
- state
33
- url
34
- ).map(&:to_sym).each do |meth|
35
- it "responds to #{meth.to_s} via method_missing" do
36
- @restaurant.send(meth).must_equal nil
37
- end
38
- end
39
- end
@@ -1,6 +0,0 @@
1
- HTTP/1.1 200 OK
2
- Status: 200
3
- Vary: Accept-Encoding
4
- Content-Type: application/json
5
-
6
- { "LoginResults": {"ns:ErrorID": "303", "ns:ErrorMessage": "Invalid User Email. Please re-enter your UserEmail.", "ns:IsAdmin": "0", "xmlns:ns": "com.opentable.webservices.v2" }}