google_places 1.1.0 → 1.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: a7c7601aa9e3d41a1d901e95f3d6d8ff3537196b
4
- data.tar.gz: 513249ec18cfb927b8cf8d48c8656a187168fbb5
3
+ metadata.gz: 749f35ddb5c9ce15000ca1d2b3aecb6154d2c227
4
+ data.tar.gz: dc73e83a3d8d21d9fa11e61c155e5aae827f80dc
5
5
  SHA512:
6
- metadata.gz: 0d7104e3321af46c15e18a1f54159ea7b54154db044fd54e1772ba7e341b85d9fa565d16dfa55e5e452c77e0056ce3a2d5f422955608f5a1cc72bdb7dc639502
7
- data.tar.gz: c85de97b1526db8d96c84b97a79a4ab3f60ad893b7987f6ce4cbb6a35a2d5c9cbc86287bf65fdefd0f3ca479891bdc8198454c282dc703e380d33694e31eb1b9
6
+ metadata.gz: 2b3f62a1f9298f31581e3590f69593160cc5e4ef7841014f1b91ab2a5957e1a16b6451b900cc02cd7c573f09e8a8599e5625966e37db923c2fa8da6261496085
7
+ data.tar.gz: 1f701b72843382e71d22f39b1f32761232d0b6ed0b5541c01177b2a88f6ec827c1f19ed3addf78c94f0592afc498dadb87ce1f788b02675469db69a632d96f70
@@ -1,3 +1,10 @@
1
+ ## 1.2.0
2
+ ### Added
3
+ - Add a region option to the `spots` and `spots_by_query` methods
4
+
5
+ ### Fixed
6
+ - Fix spots* method options leaking to other methods
7
+
1
8
  ## 1.1.0
2
9
 
3
10
  - Include the profile_photo_url attribute for the GooglePlaces::Review object
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- google_places (1.1.0)
4
+ google_places (1.2.0)
5
5
  httparty (>= 0.13.1)
6
6
 
7
7
  GEM
@@ -12,7 +12,7 @@ GEM
12
12
  safe_yaml (~> 1.0.0)
13
13
  diff-lcs (1.3)
14
14
  hashdiff (0.3.7)
15
- httparty (0.15.6)
15
+ httparty (0.16.2)
16
16
  multi_xml (>= 0.5.2)
17
17
  multi_xml (0.6.0)
18
18
  rspec (3.6.0)
@@ -3,7 +3,7 @@ $:.push File.expand_path('../lib', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'google_places'
6
- s.version = '1.1.0'
6
+ s.version = '1.2.0'
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ['Marcel de Graaf']
9
9
  s.email = ['mail@marceldegraaf.net']
@@ -93,9 +93,10 @@ module GooglePlaces
93
93
  # @see http://spreadsheets.google.com/pub?key=p9pdwsai2hDMsLkXsoM05KQ&gid=1 List of supported languages
94
94
  # @see https://developers.google.com/maps/documentation/places/supported_types List of supported types
95
95
  def spots(lat, lng, options = {})
96
- detail = @options.merge!(options).delete(:detail)
96
+ options = @options.merge(options)
97
+ detail = options.delete(:detail)
97
98
  collection_detail_level(
98
- Spot.list(lat, lng, @api_key, @options),
99
+ Spot.list(lat, lng, @api_key, options),
99
100
  detail
100
101
  )
101
102
  end
@@ -157,9 +158,10 @@ module GooglePlaces
157
158
  # @see http://spreadsheets.google.com/pub?key=p9pdwsai2hDMsLkXsoM05KQ&gid=1 List of supported languages
158
159
  # @see https://developers.google.com/maps/documentation/places/supported_types List of supported types
159
160
  def spots_by_query(query, options = {})
160
- detail = @options.merge!(options).delete(:detail)
161
+ options = @options.merge(options)
162
+ detail = options.delete(:detail)
161
163
  collection_detail_level(
162
- Spot.list_by_query(query, @api_key, @options),
164
+ Spot.list_by_query(query, @api_key, options),
163
165
  detail
164
166
  )
165
167
  end
@@ -200,9 +202,10 @@ module GooglePlaces
200
202
  #
201
203
  # @see https://developers.google.com/maps/documentation/places/supported_types List of supported types
202
204
  def spots_by_bounds(bounds, options = {})
203
- detail = @options.merge!(options).delete(:detail)
205
+ options = @options.merge(options)
206
+ detail = options.delete(:detail)
204
207
  collection_detail_level(
205
- Spot.list_by_bounds(bounds, @api_key, @options),
208
+ Spot.list_by_bounds(bounds, @api_key, options),
206
209
  detail
207
210
  )
208
211
  end
@@ -224,9 +227,10 @@ module GooglePlaces
224
227
  #
225
228
  # @see https://developers.google.com/maps/documentation/places/supported_types List of supported types
226
229
  def spots_by_pagetoken(pagetoken, options = {})
227
- detail = @options.merge!(options).delete(:detail)
230
+ options = @options.merge(options)
231
+ detail = options.delete(:detail)
228
232
  collection_detail_level(
229
- Spot.list_by_pagetoken(pagetoken, @api_key, @options),
233
+ Spot.list_by_pagetoken(pagetoken, @api_key, options),
230
234
  detail
231
235
  )
232
236
  end
@@ -268,9 +272,10 @@ module GooglePlaces
268
272
  #
269
273
  # @see https://developers.google.com/places/documentation/search#RadarSearchRequests
270
274
  def spots_by_radar(lat, lng, options = {})
271
- detail = @options.merge!(options).delete(:detail)
275
+ options = @options.merge(options)
276
+ detail = options.delete(:detail)
272
277
  collection_detail_level(
273
- Spot.list_by_radar(lat, lng, @api_key, @options),
278
+ Spot.list_by_radar(lat, lng, @api_key, options),
274
279
  detail
275
280
  )
276
281
  end
@@ -72,6 +72,12 @@ module GooglePlaces
72
72
  # <b>Note that this is a mandatory parameter</b>
73
73
  # @option options [String] :language
74
74
  # The language code, indicating in which language the results should be returned, if possible.
75
+ # @option options [String] :region
76
+ # The region code, specified as a ccTLD (country code top-level domain) two-character value. Most ccTLD
77
+ # codes are identical to ISO 3166-1 codes, with some exceptions. This parameter will only influence, not
78
+ # fully restrict, search results. If more relevant results exist outside of the specified region, they may
79
+ # be included. When this parameter is used, the country name is omitted from the resulting formatted_address
80
+ # for results in the specified region.
75
81
  #
76
82
  # @option options [Hash] :retry_options ({})
77
83
  # A Hash containing parameters for search retries
@@ -181,6 +187,12 @@ module GooglePlaces
181
187
  # Restricts the results to Spots matching at least one of the specified types
182
188
  # @option options [String] :language
183
189
  # The language code, indicating in which language the results should be returned, if possible.
190
+ # @option options [String] :region
191
+ # The region code, specified as a ccTLD (country code top-level domain) two-character value. Most ccTLD
192
+ # codes are identical to ISO 3166-1 codes, with some exceptions. This parameter will only influence, not
193
+ # fully restrict, search results. If more relevant results exist outside of the specified region, they may
194
+ # be included. When this parameter is used, the country name is omitted from the resulting formatted_address
195
+ # for results in the specified region.
184
196
  # @option options [String,Array<String>] :exclude ([])
185
197
  # A String or an Array of <b>types</b> to exclude from results
186
198
  #
@@ -236,6 +236,12 @@ module GooglePlaces
236
236
  # @param [Hash] options
237
237
  # @option options [String] :language
238
238
  # The language code, indicating in which language the results should be returned, if possible.
239
+ # @option options [String] :region
240
+ # The region code, specified as a ccTLD (country code top-level domain) two-character value. Most ccTLD
241
+ # codes are identical to ISO 3166-1 codes, with some exceptions. This parameter will only influence, not
242
+ # fully restrict, search results. If more relevant results exist outside of the specified region, they may
243
+ # be included. When this parameter is used, the country name is omitted from the resulting formatted_address
244
+ # for results in the specified region.
239
245
  #
240
246
  # @option options [Hash] :retry_options ({})
241
247
  # A Hash containing parameters for search retries
@@ -244,16 +250,19 @@ module GooglePlaces
244
250
  # @option options [Integer] :retry_options[:delay] (5) the delay between each retry in seconds
245
251
  def self.find(place_id, api_key, options = {})
246
252
  language = options.delete(:language)
253
+ region = options.delete(:region)
247
254
  retry_options = options.delete(:retry_options) || {}
248
255
  extensions = options.delete(:review_summary) ? 'review_summary' : nil
249
256
 
250
- response = Request.spot(
257
+ request_options = {
251
258
  :placeid => place_id,
252
259
  :key => api_key,
253
260
  :language => language,
254
261
  :extensions => extensions,
255
262
  :retry_options => retry_options
256
- )
263
+ }
264
+ request_options[:region] = region unless region.nil?
265
+ response = Request.spot(request_options)
257
266
 
258
267
  self.new(response['result'], api_key)
259
268
  end
@@ -304,6 +313,12 @@ module GooglePlaces
304
313
  # Restricts the results to Spots matching at least one of the specified types
305
314
  # @option options [String] :language
306
315
  # The language code, indicating in which language the results should be returned, if possible.
316
+ # @option options [String] :region
317
+ # The region code, specified as a ccTLD (country code top-level domain) two-character value. Most ccTLD
318
+ # codes are identical to ISO 3166-1 codes, with some exceptions. This parameter will only influence, not
319
+ # fully restrict, search results. If more relevant results exist outside of the specified region, they may
320
+ # be included. When this parameter is used, the country name is omitted from the resulting formatted_address
321
+ # for results in the specified region.
307
322
  # @option options [String,Array<String>] :exclude ([])
308
323
  # A String or an Array of <b>types</b> to exclude from results
309
324
  #
@@ -334,6 +349,7 @@ module GooglePlaces
334
349
  radius = options.delete(:radius) if with_radius
335
350
  rankby = options.delete(:rankby)
336
351
  language = options.delete(:language)
352
+ region = options.delete(:region)
337
353
  types = options.delete(:types)
338
354
  exclude = options.delete(:exclude) || []
339
355
  retry_options = options.delete(:retry_options) || {}
@@ -350,6 +366,7 @@ module GooglePlaces
350
366
 
351
367
  options[:location] = location.format if with_location
352
368
  options[:radius] = radius if with_radius
369
+ options[:region] = region unless region.nil?
353
370
 
354
371
  # Accept Types as a string or array
355
372
  if types
@@ -1,15 +1,30 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe GooglePlaces::Client do
4
- let(:client) { GooglePlaces::Client.new(api_key) }
4
+ let(:client) { GooglePlaces::Client.new(api_key, client_options) }
5
+ let(:client_options) { {} }
5
6
  let(:fake_spot) { Object.new }
6
7
 
7
- before do
8
- allow(fake_spot).to receive(:place_id) { 1 }
8
+ before { allow(fake_spot).to receive(:place_id) { 1 } }
9
+
10
+ describe '::api_key' do
11
+ it 'should initialize with an api_key' do
12
+ expect(client.api_key).to eq(api_key)
13
+ end
9
14
  end
10
15
 
11
- it 'should initialize with an api_key' do
12
- expect(client.api_key).to eq(api_key)
16
+ describe '::options' do
17
+ it 'should initialize without options' do
18
+ expect(client.options).to eq({})
19
+ end
20
+
21
+ context 'with options' do
22
+ let(:client_options) { {radius: 1000} }
23
+
24
+ it 'should initialize with options' do
25
+ expect(client.options).to eq(client_options)
26
+ end
27
+ end
13
28
  end
14
29
 
15
30
  describe '::spots' do
@@ -33,6 +48,15 @@ describe GooglePlaces::Client do
33
48
  client.spots(lat, lng, detail: true)
34
49
  end
35
50
  end
51
+
52
+ context 'with options' do
53
+ let(:client_options) { {radius: 1000} }
54
+ let(:method_options) { {radius: 2000} }
55
+ it 'preserves client options while merging with method options' do
56
+ allow(GooglePlaces::Spot).to receive(:list).with(lat, lng, api_key, method_options)
57
+ expect { client.spots(lat, lng, method_options) }.not_to change(client, :options)
58
+ end
59
+ end
36
60
  end
37
61
 
38
62
  describe '::spot' do
@@ -41,16 +65,21 @@ describe GooglePlaces::Client do
41
65
  expect(GooglePlaces::Spot).to receive(:find).with(place_id, api_key, {})
42
66
  client.spot(place_id)
43
67
  end
68
+
69
+ context 'with options' do
70
+ let(:client_options) { {language: 'en'} }
71
+ let(:method_options) { {language: 'es'} }
72
+ it 'preserves client options while merging with method options' do
73
+ allow(GooglePlaces::Spot).to receive(:find).with(place_id, api_key, method_options)
74
+ expect { client.spot(place_id, method_options) }.not_to change(client, :options)
75
+ end
76
+ end
44
77
  end
45
78
 
46
79
  describe '::spots_by_query' do
47
80
  let(:query) { 'Statue of liberty, New York' }
48
81
  it 'should request spots by query' do
49
- expect(GooglePlaces::Spot).to receive(:list_by_query).with(
50
- query,
51
- api_key,
52
- {}
53
- )
82
+ expect(GooglePlaces::Spot).to receive(:list_by_query).with(query, api_key, {})
54
83
  client.spots_by_query(query)
55
84
  end
56
85
 
@@ -67,6 +96,15 @@ describe GooglePlaces::Client do
67
96
  client.spots_by_query(query, detail: true)
68
97
  end
69
98
  end
99
+
100
+ context 'with options' do
101
+ let(:client_options) { {language: 'en'} }
102
+ let(:method_options) { {language: 'es'} }
103
+ it 'preserves client options while merging with method options' do
104
+ allow(GooglePlaces::Spot).to receive(:list_by_query).with(query, api_key, method_options)
105
+ expect { client.spots_by_query(query, method_options) }.not_to change(client, :options)
106
+ end
107
+ end
70
108
  end
71
109
 
72
110
  describe '::spots_by_bounds' do
@@ -79,10 +117,7 @@ describe GooglePlaces::Client do
79
117
  end
80
118
 
81
119
  it 'should request spots by bounds' do
82
- expect(GooglePlaces::Spot).to receive(:list_by_bounds).with(
83
- bounds, api_key,
84
- query: query
85
- )
120
+ expect(GooglePlaces::Spot).to receive(:list_by_bounds).with(bounds, api_key, query: query)
86
121
  client.spots_by_bounds(bounds, query: query)
87
122
  end
88
123
 
@@ -99,6 +134,32 @@ describe GooglePlaces::Client do
99
134
  client.spots_by_bounds(bounds, query: query, detail: true)
100
135
  end
101
136
  end
137
+
138
+ context 'with options' do
139
+ let(:client_options) { {language: 'en'} }
140
+ let(:method_options) { {query: query, language: 'es'} }
141
+ it 'preserves client options while merging with method options' do
142
+ allow(GooglePlaces::Spot).to receive(:list_by_bounds).with(bounds, api_key, method_options)
143
+ expect { client.spots_by_bounds(bounds, method_options) }.not_to change(client, :options)
144
+ end
145
+ end
146
+ end
147
+
148
+ describe '::spots_by_pagetoken' do
149
+ let(:pagetoken) { 'somepagetoken' }
150
+ it 'should request spots by pagetoken'do
151
+ expect(GooglePlaces::Spot).to receive(:list_by_pagetoken).with(pagetoken, api_key, {})
152
+ client.spots_by_pagetoken(pagetoken)
153
+ end
154
+
155
+ context 'with options' do
156
+ let(:client_options) { {retry_options: {max: 5}} }
157
+ let(:method_options) { {retry_options: {max: 10}} }
158
+ it 'preserves client options while merging with method options' do
159
+ allow(GooglePlaces::Spot).to receive(:list_by_pagetoken).with(pagetoken, api_key, method_options)
160
+ expect { client.spots_by_pagetoken(pagetoken, method_options) }.not_to change(client, :options)
161
+ end
162
+ end
102
163
  end
103
164
 
104
165
  describe '::spots_by_radar' do
@@ -108,13 +169,7 @@ describe GooglePlaces::Client do
108
169
  let(:radius) { 5000 }
109
170
 
110
171
  it 'should request spots by radar' do
111
- expect(GooglePlaces::Spot).to receive(:list_by_radar).with(
112
- lat,
113
- lng,
114
- api_key,
115
- radius: radius,
116
- keyword: keywords
117
- )
172
+ expect(GooglePlaces::Spot).to receive(:list_by_radar).with(lat, lng, api_key, radius: radius, keyword: keywords)
118
173
  client.spots_by_radar(lat, lng, radius: radius, keyword: keywords)
119
174
  end
120
175
 
@@ -137,19 +192,33 @@ describe GooglePlaces::Client do
137
192
  )
138
193
  end
139
194
  end
195
+
196
+ context 'with options' do
197
+ let(:client_options) { {radius: 1000} }
198
+ let(:method_options) { {radius: radius, keyword: keywords} }
199
+ it 'preserves client options while merging with method options' do
200
+ allow(GooglePlaces::Spot).to receive(:list_by_radar).with(lat, lng, api_key, method_options)
201
+ expect { client.spots_by_radar(lat, lng, method_options) }.not_to change(client, :options)
202
+ end
203
+ end
140
204
  end
141
205
 
142
206
  describe '::predictions_by_input' do
143
207
  let(:input) { 'Atlanta' }
144
208
 
145
209
  it 'should request predictions by input' do
146
- expect(GooglePlaces::Prediction).to receive(:list_by_input).with(
147
- input,
148
- api_key,
149
- {}
150
- )
210
+ expect(GooglePlaces::Prediction).to receive(:list_by_input).with(input, api_key, {})
151
211
  client.predictions_by_input(input)
152
212
  end
213
+
214
+ context 'with options' do
215
+ let(:client_options) { {radius: 1000} }
216
+ let(:method_options) { {radius: 2000} }
217
+ it 'preserves client options while merging with method options' do
218
+ allow(GooglePlaces::Prediction).to receive(:list_by_input).with(input, api_key, method_options)
219
+ expect { client.predictions_by_input(input, method_options) }.not_to change(client, :options)
220
+ end
221
+ end
153
222
  end
154
223
 
155
224
  describe 'detailed spots', vcr: { cassette_name: 'list_spots_with_detail' } do
@@ -140,6 +140,20 @@ describe GooglePlaces::Spot do
140
140
  @collection = GooglePlaces::Spot.list_by_query('Statue of liberty, New York', api_key)
141
141
  end
142
142
 
143
+ it 'should include country in formatted address' do
144
+ @collection = GooglePlaces::Spot.list_by_query('Statue of liberty, New York', api_key, region: 'ca')
145
+ @collection.each do |spot|
146
+ expect(spot.formatted_address).to end_with('United States')
147
+ end
148
+ end
149
+
150
+ it 'should not include country in formatted address' do
151
+ @collection = GooglePlaces::Spot.list_by_query('Statue of liberty, New York', api_key, region: 'us')
152
+ @collection.each do |spot|
153
+ expect(spot.formatted_address).to_not end_with('United States')
154
+ end
155
+ end
156
+
143
157
  end
144
158
 
145
159
  context 'List spots by radar', vcr: { cassette_name: 'list_spots_by_radar' } do
@@ -183,4 +197,16 @@ describe GooglePlaces::Spot do
183
197
  end
184
198
  end
185
199
  end
200
+
201
+ context 'Find a single spot with region parameter', vcr: { cassette_name: 'single_spot' } do
202
+ it 'should include country name in formatted address' do
203
+ @spot = GooglePlaces::Spot.find(@place_id, api_key, region: 'nz')
204
+ expect(@spot.formatted_address).to end_with('Australia')
205
+ end
206
+
207
+ it 'should not include country name in formatted address' do
208
+ @spot = GooglePlaces::Spot.find(@place_id, api_key, region: 'au')
209
+ expect(@spot.formatted_address).to_not end_with('Australia')
210
+ end
211
+ end
186
212
  end
@@ -2318,4 +2318,184 @@ http_interactions:
2318
2318
  }
2319
2319
  http_version:
2320
2320
  recorded_at: Tue, 07 Feb 2017 16:16:33 GMT
2321
+ - request:
2322
+ method: get
2323
+ uri: https://maps.googleapis.com/maps/api/place/textsearch/json?key=AIzaSyAKeN0XMV5LqJmqBrZZ1K8qMipFW7-Eybg&language=&query=Statue%20of%20liberty,%20New%20York&rankby=&region=ca
2324
+ body:
2325
+ encoding: US-ASCII
2326
+ string: ''
2327
+ headers:
2328
+ Accept-Encoding:
2329
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
2330
+ Accept:
2331
+ - "*/*"
2332
+ User-Agent:
2333
+ - Ruby
2334
+ response:
2335
+ status:
2336
+ code: 200
2337
+ message: OK
2338
+ headers:
2339
+ Content-Type:
2340
+ - application/json; charset=UTF-8
2341
+ Date:
2342
+ - Wed, 24 Jan 2018 12:18:14 GMT
2343
+ Expires:
2344
+ - Wed, 24 Jan 2018 12:23:14 GMT
2345
+ Cache-Control:
2346
+ - public, max-age=300
2347
+ Vary:
2348
+ - Accept-Language
2349
+ Server:
2350
+ - scaffolding on HTTPServer2
2351
+ Content-Length:
2352
+ - '949'
2353
+ X-Xss-Protection:
2354
+ - 1; mode=block
2355
+ X-Frame-Options:
2356
+ - SAMEORIGIN
2357
+ Alt-Svc:
2358
+ - hq=":443"; ma=2592000; quic=51303431; quic=51303339; quic=51303338; quic=51303337;
2359
+ quic=51303335,quic=":443"; ma=2592000; v="41,39,38,37,35"
2360
+ body:
2361
+ encoding: ASCII-8BIT
2362
+ string: |
2363
+ {
2364
+ "html_attributions" : [],
2365
+ "results" : [
2366
+ {
2367
+ "formatted_address" : "New York, NY, United States",
2368
+ "geometry" : {
2369
+ "location" : {
2370
+ "lat" : 40.6892494,
2371
+ "lng" : -74.04450039999999
2372
+ },
2373
+ "viewport" : {
2374
+ "northeast" : {
2375
+ "lat" : 40.71823,
2376
+ "lng" : -73.99872490000001
2377
+ },
2378
+ "southwest" : {
2379
+ "lat" : 40.6795892,
2380
+ "lng" : -74.05975889999998
2381
+ }
2382
+ }
2383
+ },
2384
+ "icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/generic_recreational-71.png",
2385
+ "id" : "5a0d7e67078e35af0c456a277df9ffba7c1e4da6",
2386
+ "name" : "Statue of Liberty National Monument",
2387
+ "opening_hours" : {
2388
+ "open_now" : false,
2389
+ "weekday_text" : []
2390
+ },
2391
+ "photos" : [
2392
+ {
2393
+ "height" : 667,
2394
+ "html_attributions" : [
2395
+ "\u003ca href=\"https://maps.google.com/maps/contrib/114885487034263057803/photos\"\u003eManish Sharma\u003c/a\u003e"
2396
+ ],
2397
+ "photo_reference" : "CmRZAAAApIdeJ7LZhzqa-SfazEF4feWIFXt09HK-g8xV90QE1Y7qkyjFdtiM7meBrsWZ_i_-2Wbr5LPNpoO4AMVpRNDjsZbh3yCGRuTvKU43rcKdX_31ktO-rDtNps9t23WOBiF4EhBWFUzvr4jjtQ--j5PHX9UXGhQ03NED1g5rdXui4yMazYKFiKKC-A",
2398
+ "width" : 1000
2399
+ }
2400
+ ],
2401
+ "place_id" : "ChIJPTacEpBQwokRKwIlDXelxkA",
2402
+ "rating" : 4.6,
2403
+ "reference" : "CmRRAAAALN3WhgFKsd3Zwc8OuQZsFiKk3KYfwqd6jys7771vFQNoKFTwULh4l911ax0Sce1XywmtqFKoREYVaN6mzeqKD9SUa8bERwYQMtsCDYmSIBSZuOYQUVDOJdNBXZ49CsxgEhAgMeVxYVCP8AdoyXyoezmXGhTf5UmS27ih7GQL7Cnz44xlEHtx9A",
2404
+ "types" : [ "park", "point_of_interest", "establishment" ]
2405
+ }
2406
+ ],
2407
+ "status" : "OK"
2408
+ }
2409
+ http_version:
2410
+ recorded_at: Wed, 24 Jan 2018 12:18:14 GMT
2411
+ - request:
2412
+ method: get
2413
+ uri: https://maps.googleapis.com/maps/api/place/textsearch/json?key=AIzaSyAKeN0XMV5LqJmqBrZZ1K8qMipFW7-Eybg&language=&query=Statue%20of%20liberty,%20New%20York&rankby=&region=us
2414
+ body:
2415
+ encoding: US-ASCII
2416
+ string: ''
2417
+ headers:
2418
+ Accept-Encoding:
2419
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
2420
+ Accept:
2421
+ - "*/*"
2422
+ User-Agent:
2423
+ - Ruby
2424
+ response:
2425
+ status:
2426
+ code: 200
2427
+ message: OK
2428
+ headers:
2429
+ Content-Type:
2430
+ - application/json; charset=UTF-8
2431
+ Date:
2432
+ - Wed, 24 Jan 2018 12:18:15 GMT
2433
+ Expires:
2434
+ - Wed, 24 Jan 2018 12:23:15 GMT
2435
+ Cache-Control:
2436
+ - public, max-age=300
2437
+ Vary:
2438
+ - Accept-Language
2439
+ Server:
2440
+ - scaffolding on HTTPServer2
2441
+ Content-Length:
2442
+ - '939'
2443
+ X-Xss-Protection:
2444
+ - 1; mode=block
2445
+ X-Frame-Options:
2446
+ - SAMEORIGIN
2447
+ Alt-Svc:
2448
+ - hq=":443"; ma=2592000; quic=51303431; quic=51303339; quic=51303338; quic=51303337;
2449
+ quic=51303335,quic=":443"; ma=2592000; v="41,39,38,37,35"
2450
+ body:
2451
+ encoding: ASCII-8BIT
2452
+ string: |
2453
+ {
2454
+ "html_attributions" : [],
2455
+ "results" : [
2456
+ {
2457
+ "formatted_address" : "New York, NY",
2458
+ "geometry" : {
2459
+ "location" : {
2460
+ "lat" : 40.6892494,
2461
+ "lng" : -74.04450039999999
2462
+ },
2463
+ "viewport" : {
2464
+ "northeast" : {
2465
+ "lat" : 40.71823,
2466
+ "lng" : -73.99872490000001
2467
+ },
2468
+ "southwest" : {
2469
+ "lat" : 40.6795892,
2470
+ "lng" : -74.05975889999998
2471
+ }
2472
+ }
2473
+ },
2474
+ "icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/generic_recreational-71.png",
2475
+ "id" : "5a0d7e67078e35af0c456a277df9ffba7c1e4da6",
2476
+ "name" : "Statue of Liberty National Monument",
2477
+ "opening_hours" : {
2478
+ "open_now" : false,
2479
+ "weekday_text" : []
2480
+ },
2481
+ "photos" : [
2482
+ {
2483
+ "height" : 667,
2484
+ "html_attributions" : [
2485
+ "\u003ca href=\"https://maps.google.com/maps/contrib/114885487034263057803/photos\"\u003eManish Sharma\u003c/a\u003e"
2486
+ ],
2487
+ "photo_reference" : "CmRZAAAAWX4o1rEMvvWFN4QMewxBGxi-aAFTY42528CaKXiwPa7emFYaj0Wg-9skfqkQehjf1xTTKQi7q5VrbMjmmAlpmABf8v6YRcaIbpZG6QWOXO70EnbrO0Eht2OS3bsplrmZEhAPAr0iUM2kcMJQcEYkL0eLGhQ71THLSgBL7YPwFtKCqWa3S4iUeA",
2488
+ "width" : 1000
2489
+ }
2490
+ ],
2491
+ "place_id" : "ChIJPTacEpBQwokRKwIlDXelxkA",
2492
+ "rating" : 4.6,
2493
+ "reference" : "CmRRAAAAwPI8lLjxL_DyyktO_JdjvdEiNXho7mMyB8UMV3R904Un27yS5lqCT0ulfvPLF0uE2f87Ayosb34vZq0T23h9zxZ1H4oN4uASk7mOV0QlXldh2fm53mlgYcAkLy9Zr8kXEhDcmwk0tyU1rWCqJzRvtFArGhRXRyC-f_tRlJVmFTsDketKi0U1EA",
2494
+ "types" : [ "park", "point_of_interest", "establishment" ]
2495
+ }
2496
+ ],
2497
+ "status" : "OK"
2498
+ }
2499
+ http_version:
2500
+ recorded_at: Wed, 24 Jan 2018 12:18:15 GMT
2321
2501
  recorded_with: VCR 2.9.3