google_places 0.18.0 → 0.19.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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NDQxZDY1Nzk5N2RjMGFkNzMxNWZjZWVjMzA5YTc3YjVkYzExNTQwMw==
4
+ MGY1NTVkOWNjZDRlZjlmZTNjNzE2MmZlODg3NjNhNzM2YzIxMWE3NA==
5
5
  data.tar.gz: !binary |-
6
- NjIzMmFjY2EyYzI1ZDMxMmVhMWNhMjIzYTlkNDVkN2Y2YzAzYzEzOQ==
7
- !binary "U0hBNTEy":
6
+ YzczNDA5NzE4ZjkxMDA4MWFlMTg5YmI5ZmQzY2EyZTI2MDE0MGZjMg==
7
+ SHA512:
8
8
  metadata.gz: !binary |-
9
- Yjc5YTc2YzYyMzczN2FjNDNhNTIyNWNiNGZiMjI1YzhmMGU1OGNkY2ZhNjMz
10
- ZjYxZGRmZTkwMWNjYjdlNjlhYjIwMjk1Nzk4YTY5MDg1NDBhM2JlMThjMDBl
11
- NzIzZjI5MzU1YjhhOGQ5ODE4NzExYjFmMTlmOWM4MThmYTk4NjY=
9
+ YjJjMmNmNDkzYjkwM2VmYWFkOTVlOTY0ZWRmMTVlMjc0MDE0M2JmZmIwM2Mx
10
+ Y2U5MzJiYzExNTQyNTE0MWJhOWMxY2NhMGU3MWYwM2Q5ZjhhMjM4NjU1Nzdh
11
+ MmViZDk1OTI4MTVjMmY3YmE4MTBjYjEzOThmOWU1MTk0MGFlMTQ=
12
12
  data.tar.gz: !binary |-
13
- NzNhNjI1NDVhOWIwMzZjODI2YzZmNjU3ZDQ0YzgzZDFjYmVkODMyOGRkOWEx
14
- MDI4Yzc1NzFkODRmZWZhMDQxZmJiZjIyOTk1OTRiY2M3MTZjNDBjYmZhZmFk
15
- YTk0OTcxNzFmZjIzN2JjN2E4ZjMxMGUwNzQ5MjhjZGRmN2MzNDc=
13
+ OGFjOTExYzIxYWJlYjNkNDc0MDZkMGJjZWY2N2Q4ZGI1MGYzZWYzZTA2Mzgy
14
+ MGRmNjhiODMxNWJjNWFhMDYxNTg1MTcwNTE4MjFjMzAyMWRjYWUyY2FjMGYy
15
+ MDRlMWZjNjg3YjlkNDE0YWE3MjQzZDQwMjU2YTU4OGUxMjk2MzY=
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- google_places (0.17.0)
4
+ google_places (0.18.0)
5
5
  httparty
6
6
 
7
7
  GEM
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2011 - 2013, Marcel de Graaf
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ the Software, and to permit persons to whom the Software is furnished to do so,
10
+ subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc CHANGED
@@ -92,6 +92,20 @@ Then retrieve the spot:
92
92
 
93
93
  @client.spot('CmRYAAA...upoTH3g')
94
94
 
95
+ === Retrieving a single photo's url
96
+
97
+ First register a new Client:
98
+
99
+ @client = GooglePlaces::Client.new(API_KEY)
100
+
101
+ Then retrieve the spot:
102
+
103
+ @spot = @client.spot('CmRYAAA...upoTH3g')
104
+
105
+ Then request one of the photos url with a max width:
106
+
107
+ url = @spot.photos[0].fetch_url(800)
108
+
95
109
 
96
110
  == Development
97
111
 
@@ -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 = '0.18.0'
6
+ s.version = '0.19.0'
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ["Marcel de Graaf"]
9
9
  s.email = ["mail@marceldegraaf.net"]
data/lib/google_places.rb CHANGED
@@ -1,7 +1,18 @@
1
1
  require 'rubygems'
2
2
  require 'httparty'
3
3
 
4
-
5
- %w(client location request spot error).each do |file|
4
+ %w(client location request spot error photo).each do |file|
6
5
  require File.join(File.dirname(__FILE__), 'google_places', file)
7
6
  end
7
+
8
+ module GooglePlaces
9
+ class << self
10
+
11
+ attr_accessor :api_key
12
+
13
+ def configuration
14
+ yield self
15
+ end
16
+
17
+ end
18
+ end
@@ -43,8 +43,9 @@ module GooglePlaces
43
43
  #
44
44
  # @see http://spreadsheets.google.com/pub?key=p9pdwsai2hDMsLkXsoM05KQ&gid=1 List of supported languages
45
45
  # @see https://developers.google.com/maps/documentation/places/supported_types List of supported types
46
- def initialize(api_key, sensor = false, options = {})
47
- @api_key = api_key
46
+
47
+ def initialize(api_key = @api_key, sensor = false, options = {})
48
+ api_key ? @api_key = api_key : @api_key = GooglePlaces.api_key
48
49
  @sensor = sensor
49
50
  @options = options
50
51
  end
@@ -0,0 +1,44 @@
1
+ module GooglePlaces
2
+ class Photo
3
+ attr_accessor :width, :height, :photo_reference, :html_attributions
4
+
5
+ def initialize(width, height, photo_reference, html_attributions, api_key, sensor)
6
+ @width = width
7
+ @height = height
8
+ @photo_reference = photo_reference
9
+ @html_attributions = html_attributions
10
+ @api_key = api_key
11
+ @sensor = sensor
12
+ end
13
+
14
+ # Search for a Photo's url with its reference key
15
+ #
16
+ # @return [URL]
17
+ # @param [String] api_key the provided api key
18
+ # @param [Boolean] sensor
19
+ # Indicates whether or not the Place request came from a device using a location sensor (e.g. a GPS)
20
+ # to determine the location sent in this request.
21
+ # <b>Note that this is a mandatory parameter</b>
22
+ # @param [Hash] options
23
+ # @option options [Hash] :retry_options ({})
24
+ # A Hash containing parameters for search retries
25
+ # @option options [Object] :retry_options[:status] ([])
26
+ # @option options [Integer] :retry_options[:max] (0) the maximum retries
27
+ # @option options [Integer] :retry_options[:delay] (5) the delay between each retry in seconds
28
+ def fetch_url(maxwidth, options = {})
29
+ language = options.delete(:language)
30
+ retry_options = options.delete(:retry_options) || {}
31
+
32
+ unless @fetched_url
33
+ @fetched_url = Request.photo_url(
34
+ :maxwidth => maxwidth,
35
+ :photoreference => @photo_reference,
36
+ :sensor => @sensor,
37
+ :key => @api_key,
38
+ :retry_options => retry_options
39
+ )
40
+ end
41
+ @fetched_url
42
+ end
43
+ end
44
+ end
@@ -10,6 +10,7 @@ module GooglePlaces
10
10
 
11
11
  NEARBY_SEARCH_URL = 'https://maps.googleapis.com/maps/api/place/nearbysearch/json'
12
12
  DETAILS_URL = 'https://maps.googleapis.com/maps/api/place/details/json'
13
+ PHOTO_URL = 'https://maps.googleapis.com/maps/api/place/photo'
13
14
  TEXT_SEARCH_URL = 'https://maps.googleapis.com/maps/api/place/textsearch/json'
14
15
  PAGETOKEN_URL = 'https://maps.googleapis.com/maps/api/place/search/json'
15
16
 
@@ -142,6 +143,33 @@ module GooglePlaces
142
143
  request.parsed_response
143
144
  end
144
145
 
146
+ # Search for a Photo's URL with a reference key
147
+ #
148
+ # @return [URL]
149
+ # @param [Hash] options
150
+ # @option options [String] :key
151
+ # the provided api key.
152
+ # <b>Note that this is a mandatory parameter</b>
153
+ # @option options [Integer] :maxwidth
154
+ # The maximum width of the photo url to be returned
155
+ # <b>Note that this is a mandatory parameter</b>
156
+ # @option options [String] :photoreference
157
+ # The reference of a already retrieved Photo
158
+ # <b>Note that this is a mandatory parameter</b>
159
+ # @option options [Boolean] :sensor
160
+ # Indicates whether or not the Place request came from a device using a location sensor (e.g. a GPS) to determine the location sent in this request.
161
+ # <b>Note that this is a mandatory parameter</b>
162
+ #
163
+ # @option options [Hash] :retry_options ({})
164
+ # A Hash containing parameters for search retries
165
+ # @option options [Object] :retry_options[:status] ([])
166
+ # @option options [Integer] :retry_options[:max] (0) the maximum retries
167
+ # @option options [Integer] :retry_options[:delay] (5) the delay between each retry in seconds
168
+ def self.photo_url(options = {})
169
+ request = new(PHOTO_URL, options, false)
170
+ request.parsed_response
171
+ end
172
+
145
173
  # Create a new Request for a given uri and the provided params
146
174
  #
147
175
  # @return [Request]
@@ -183,7 +211,7 @@ module GooglePlaces
183
211
  #
184
212
  # @see http://spreadsheets.google.com/pub?key=p9pdwsai2hDMsLkXsoM05KQ&gid=1 List of supported languages
185
213
  # @see https://developers.google.com/maps/documentation/places/supported_types List of supported types
186
- def initialize(url, options)
214
+ def initialize(url, options, follow_redirects = true)
187
215
  retry_options = options.delete(:retry_options) || {}
188
216
 
189
217
  retry_options[:status] ||= []
@@ -191,8 +219,8 @@ module GooglePlaces
191
219
  retry_options[:delay] ||= 5
192
220
 
193
221
  retry_options[:status] = [retry_options[:status]] unless retry_options[:status].is_a?(Array)
222
+ @response = self.class.get(url, :query => options, :follow_redirects => follow_redirects)
194
223
 
195
- @response = self.class.get(url, :query => options)
196
224
  # puts "@response.request.last_uri.to_s"
197
225
  # puts @response.request.last_uri.to_s
198
226
 
@@ -202,7 +230,7 @@ module GooglePlaces
202
230
  for i in (1..retry_options[:max])
203
231
  sleep(retry_options[:delay])
204
232
 
205
- @response = self.class.get(url, :query => options)
233
+ @response = self.class.get(url, :query => options, :follow_redirects => follow_redirects)
206
234
 
207
235
  break unless retry_options[:status].include?(@response.parsed_response['status'])
208
236
  end
@@ -224,7 +252,7 @@ module GooglePlaces
224
252
  end
225
253
 
226
254
  def execute
227
- @response = self.class.get(url, :query => options)
255
+ @response = self.class.get(url, :query => options, :follow_redirects => follow_redirects)
228
256
  end
229
257
 
230
258
  # Parse errors from the server respons, if any
@@ -235,6 +263,7 @@ module GooglePlaces
235
263
  # @raise [NotFoundError] when server response object includes 'NOT_FOUND'
236
264
  # @return [String] the response from the server as JSON
237
265
  def parsed_response
266
+ return @response.headers["location"] if @response.code >= 300 and @response.code < 400
238
267
  case @response.parsed_response['status']
239
268
  when 'OK', 'ZERO_RESULTS'
240
269
  @response.parsed_response
@@ -2,7 +2,7 @@ require 'google_places/review'
2
2
 
3
3
  module GooglePlaces
4
4
  class Spot
5
- attr_accessor :lat, :lng, :name, :icon, :reference, :vicinity, :types, :id, :formatted_phone_number, :international_phone_number, :formatted_address, :address_components, :street_number, :street, :city, :region, :postal_code, :country, :rating, :url, :cid, :website, :reviews, :aspects, :zagat_selected, :zagat_reviewed, :photos, :review_summary, :nextpagetoken, :price_level, :opening_hours
5
+ attr_accessor :lat, :lng, :name, :icon, :reference, :vicinity, :types, :id, :formatted_phone_number, :international_phone_number, :formatted_address, :address_components, :street_number, :street, :city, :region, :postal_code, :country, :rating, :url, :cid, :website, :reviews, :aspects, :zagat_selected, :zagat_reviewed, :photos, :review_summary, :nextpagetoken, :price_level, :opening_hours, :events, :utc_offset
6
6
 
7
7
  # Search for Spots at the provided location
8
8
  #
@@ -119,7 +119,7 @@ module GooglePlaces
119
119
  :retry_options => retry_options
120
120
  )
121
121
 
122
- self.new(response['result'])
122
+ self.new(response['result'], api_key, sensor)
123
123
  end
124
124
 
125
125
  # Search for Spots with a pagetoken
@@ -239,7 +239,7 @@ module GooglePlaces
239
239
  # Some places returned by Google do not have a 'types' property. If the user specified 'types', then
240
240
  # this is a non-issue because those places will not be returned. However, if the user did not specify
241
241
  # 'types', then we do not want to filter out places with a missing 'types' property from the results set.
242
- results << self.new(result) if result['types'].nil? || (result['types'] & exclude) == []
242
+ results << self.new(result, options[:key], options[:sensor]) if result['types'].nil? || (result['types'] & exclude) == []
243
243
  end
244
244
 
245
245
  results
@@ -278,7 +278,7 @@ module GooglePlaces
278
278
 
279
279
  # @param [JSON] json_result_object a JSON object to create a Spot from
280
280
  # @return [Spot] a newly created spot
281
- def initialize(json_result_object)
281
+ def initialize(json_result_object, api_key, sensor)
282
282
  @reference = json_result_object['reference']
283
283
  @vicinity = json_result_object['vicinity']
284
284
  @lat = json_result_object['geometry']['location']['lat']
@@ -307,9 +307,11 @@ module GooglePlaces
307
307
  @zagat_selected = json_result_object['zagat_selected']
308
308
  @aspects = aspects_component(json_result_object['aspects'])
309
309
  @review_summary = json_result_object['review_summary']
310
- @photos = photos_component(json_result_object['photos'])
310
+ @photos = photos_component(json_result_object['photos'], api_key, sensor)
311
311
  @reviews = reviews_component(json_result_object['reviews'])
312
312
  @nextpagetoken = json_result_object['nextpagetoken']
313
+ @events = events_component(json_result_object['events'])
314
+ @utc_offset = json_result_object['utc_offset']
313
315
  end
314
316
 
315
317
  def [] (key)
@@ -346,8 +348,24 @@ module GooglePlaces
346
348
  json_aspects.to_a.map{ |r| { :type => r['type'], :rating => r['rating'] } }
347
349
  end
348
350
 
349
- def photos_component(json_photos)
350
- json_photos.to_a.map{ |r| { :width => r['width'], :height => r['height'], :width => r['width'], :photo_reference => r['photo_reference'], :html_attributions => r['html_attributions'] } }
351
+ def photos_component(json_photos, api_key, sensor)
352
+ if json_photos
353
+ json_photos.map{ |p|
354
+ Photo.new(
355
+ p['width'],
356
+ p['height'],
357
+ p['photo_reference'],
358
+ p['html_attributions'],
359
+ api_key,
360
+ sensor
361
+ )
362
+ }
363
+ else []
364
+ end
365
+ end
366
+
367
+ def events_component(json_events)
368
+ json_events.to_a.map{ |r| {:event_id => r['event_id'], :summary => r['summary'], :url => r['url'], :start_time => r['start_time']} }
351
369
  end
352
370
  end
353
371
  end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe GooglePlaces do
4
+ it "should be able to initialize client without any params" do
5
+ client = GooglePlaces::Client.new
6
+ client.api_key.should == nil
7
+ end
8
+
9
+ shared_examples "config api_key" do
10
+ it "should be able to config api_key" do
11
+ GooglePlaces.configuration do |config|
12
+ config.api_key = '456'
13
+ end
14
+ client = GooglePlaces::Client.new
15
+ client.api_key.should == '456'
16
+ end
17
+ end
18
+
19
+ include_examples "config api_key" do
20
+ it "should be able to config api_key and being overwrite" do
21
+ client = GooglePlaces::Client.new
22
+ client.api_key.should_not == nil
23
+ client = GooglePlaces::Client.new '123'
24
+ client.api_key.should == '123'
25
+ end
26
+ end
27
+ end
@@ -2,10 +2,6 @@ require 'spec_helper'
2
2
 
3
3
  describe GooglePlaces::Client do
4
4
 
5
- it 'should not initialize without an api_key' do
6
- lambda { GooglePlaces::Client.new }.should raise_error
7
- end
8
-
9
5
  it 'should initialize with an api_key' do
10
6
  @client = GooglePlaces::Client.new(api_key)
11
7
  @client.api_key.should == api_key
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe GooglePlaces::Photo do
4
+
5
+ before :each do
6
+ @max_width = 400
7
+ @sensor = false
8
+ @photo_reference = "CnRtAAAACQQXR83Jc3Pffxt1Zx7QbCe6AfY2negSNzkk2IeSf0q5nxHgartLzkr1fltSlkEDSS-EZqswWAW2eQDbiOl12J-V4Rmn_JNko9e9gSnMwxHBdmScu_84NMSe-0RwB9BM6AEqE8sENXQ8cpWaiEsC_RIQLzIJxpRdoqSPrPtrjTrOhxoUWb8uwObkV4duXfKIiNB20gfnu88"
9
+ end
10
+
11
+ context 'Photo' do
12
+ use_vcr_cassette 'photo'
13
+ before :each do
14
+ @photo = GooglePlaces::Photo.new(400, 400, @photo_reference, [], api_key, @sensor)
15
+ end
16
+ it 'should be a Photo' do
17
+ @photo.class.should == GooglePlaces::Photo
18
+ end
19
+ %w(width height photo_reference html_attributions).each do |attribute|
20
+ it "should have the attribute: #{attribute}" do
21
+ @photo.respond_to?(attribute).should == true
22
+ end
23
+ end
24
+ it 'should return a url when fetched' do
25
+ url = @photo.fetch_url(@max_width)
26
+ url.should_not be_empty
27
+ end
28
+ end
29
+ end
@@ -190,7 +190,7 @@ describe GooglePlaces::Spot do
190
190
  it 'should be a Spot' do
191
191
  @spot.class.should == GooglePlaces::Spot
192
192
  end
193
- %w(reference vicinity lat lng name icon types id formatted_phone_number international_phone_number formatted_address address_components street_number street city region postal_code country rating url types website price_level opening_hours).each do |attribute|
193
+ %w(reference vicinity lat lng name icon types id formatted_phone_number international_phone_number formatted_address address_components street_number street city region postal_code country rating url types website price_level opening_hours events utc_offset).each do |attribute|
194
194
  it "should have the attribute: #{attribute}" do
195
195
  @spot.respond_to?(attribute).should == true
196
196
  end
data/spec/spec_helper.rb CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'bundler/setup'
3
3
  require 'vcr_setup'
4
4
  require 'api_key'
5
- require 'google_places'
5
+ require File.dirname(__FILE__) + "/../lib/" + 'google_places'
6
6
 
7
7
  def api_key
8
8
  RSPEC_API_KEY
@@ -0,0 +1,46 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://maps.googleapis.com/maps/api/place/photo?maxwidth=400&photoreference=CnRtAAAACQQXR83Jc3Pffxt1Zx7QbCe6AfY2negSNzkk2IeSf0q5nxHgartLzkr1fltSlkEDSS-EZqswWAW2eQDbiOl12J-V4Rmn_JNko9e9gSnMwxHBdmScu_84NMSe-0RwB9BM6AEqE8sENXQ8cpWaiEsC_RIQLzIJxpRdoqSPrPtrjTrOhxoUWb8uwObkV4duXfKIiNB20gfnu88&sensor=false&key=AIzaSyATGBjcfrRXQtNEMMyt8Fw7tSGEY8PQwv0
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 302
13
+ message: Found
14
+ headers:
15
+ date:
16
+ - Fri, 18 Oct 2013 10:27:29 GMT
17
+ pragma:
18
+ - no-cache
19
+ expires:
20
+ - Fri, 01 Jan 1990 00:00:00 GMT
21
+ cache-control:
22
+ - no-cache, must-revalidate
23
+ location:
24
+ - https://lh4.googleusercontent.com/-1wzlVdxiW14/USSFZnhNqxI/AAAAAAAABGw/YpdANqaoGh4/s1600-w400/Google%2BSydney
25
+ content-type:
26
+ - text/html; charset=UTF-8
27
+ server:
28
+ - mafe
29
+ content-length:
30
+ - '306'
31
+ x-xss-protection:
32
+ - 1; mode=block
33
+ x-frame-options:
34
+ - SAMEORIGIN
35
+ alternate-protocol:
36
+ - 443:quic
37
+ connection:
38
+ - close
39
+ body:
40
+ encoding: US-ASCII
41
+ string: ! "<HTML><HEAD><meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\">\n<TITLE>302
42
+ Moved</TITLE></HEAD><BODY>\n<H1>302 Moved</H1>\nThe document has moved\n<A
43
+ HREF=\"https://lh4.googleusercontent.com/-1wzlVdxiW14/USSFZnhNqxI/AAAAAAAABGw/YpdANqaoGh4/s1600-w400/Google%2BSydney\">here</A>.\r\n</BODY></HTML>\r\n"
44
+ http_version: '1.1'
45
+ recorded_at: Fri, 18 Oct 2013 10:27:29 GMT
46
+ recorded_with: VCR 2.2.5
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_places
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.0
4
+ version: 0.19.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcel de Graaf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-19 00:00:00.000000000 Z
11
+ date: 2013-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -78,6 +78,7 @@ files:
78
78
  - .travis.yml
79
79
  - Gemfile
80
80
  - Gemfile.lock
81
+ - LICENSE.txt
81
82
  - README.rdoc
82
83
  - Rakefile
83
84
  - google_places.gemspec
@@ -85,13 +86,16 @@ files:
85
86
  - lib/google_places/client.rb
86
87
  - lib/google_places/error.rb
87
88
  - lib/google_places/location.rb
89
+ - lib/google_places/photo.rb
88
90
  - lib/google_places/request.rb
89
91
  - lib/google_places/review.rb
90
92
  - lib/google_places/spot.rb
91
93
  - spec/api_key.sample.rb
92
94
  - spec/api_key.travis.rb
95
+ - spec/google_places.rb
93
96
  - spec/google_places/client_spec.rb
94
97
  - spec/google_places/location_spec.rb
98
+ - spec/google_places/photo_spec.rb
95
99
  - spec/google_places/request_spec.rb
96
100
  - spec/google_places/spot_spec.rb
97
101
  - spec/spec_helper.rb
@@ -102,6 +106,7 @@ files:
102
106
  - spec/vcr_cassettes/list_spots_with_single_type.yml
103
107
  - spec/vcr_cassettes/list_spots_with_types_and_exclusion.yml
104
108
  - spec/vcr_cassettes/multiple_page_request.yml
109
+ - spec/vcr_cassettes/photo.yml
105
110
  - spec/vcr_cassettes/premium_list_spots_with_data.yml
106
111
  - spec/vcr_cassettes/single_spot.yml
107
112
  - spec/vcr_setup.rb
@@ -125,15 +130,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
130
  version: '0'
126
131
  requirements: []
127
132
  rubyforge_project:
128
- rubygems_version: 2.0.5
133
+ rubygems_version: 2.1.3
129
134
  signing_key:
130
135
  specification_version: 4
131
136
  summary: A Ruby wrapper around the Google Places API.
132
137
  test_files:
133
138
  - spec/api_key.sample.rb
134
139
  - spec/api_key.travis.rb
140
+ - spec/google_places.rb
135
141
  - spec/google_places/client_spec.rb
136
142
  - spec/google_places/location_spec.rb
143
+ - spec/google_places/photo_spec.rb
137
144
  - spec/google_places/request_spec.rb
138
145
  - spec/google_places/spot_spec.rb
139
146
  - spec/spec_helper.rb
@@ -144,6 +151,7 @@ test_files:
144
151
  - spec/vcr_cassettes/list_spots_with_single_type.yml
145
152
  - spec/vcr_cassettes/list_spots_with_types_and_exclusion.yml
146
153
  - spec/vcr_cassettes/multiple_page_request.yml
154
+ - spec/vcr_cassettes/photo.yml
147
155
  - spec/vcr_cassettes/premium_list_spots_with_data.yml
148
156
  - spec/vcr_cassettes/single_spot.yml
149
157
  - spec/vcr_setup.rb