google_places 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/google_places.gemspec +1 -1
- data/lib/google_places/review.rb +13 -0
- data/lib/google_places/spot.rb +20 -1
- data/spec/google_places/spot_spec.rb +8 -3
- metadata +5 -4
data/Gemfile.lock
CHANGED
data/google_places.gemspec
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
module GooglePlaces
|
2
|
+
class Review
|
3
|
+
attr_accessor :rating, :type, :author_name, :author_url, :text, :time
|
4
|
+
def initialize(rating, type, author_name, author_url, text, time)
|
5
|
+
@rating = rating
|
6
|
+
@type = type
|
7
|
+
@author_name = author_name
|
8
|
+
@author_url = author_url
|
9
|
+
@text = text
|
10
|
+
@time = time
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/google_places/spot.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
+
require 'google_places/review'
|
2
|
+
|
1
3
|
module GooglePlaces
|
2
4
|
class Spot
|
3
|
-
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
|
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
|
4
6
|
|
5
7
|
def self.list(lat, lng, api_key, options = {})
|
6
8
|
radius = options.delete(:radius) || 200
|
@@ -124,6 +126,7 @@ module GooglePlaces
|
|
124
126
|
@url = json_result_object['url']
|
125
127
|
@cid = json_result_object['url'].to_i
|
126
128
|
@website = json_result_object['website']
|
129
|
+
@reviews = reviews_component(json_result_object['reviews'])
|
127
130
|
end
|
128
131
|
|
129
132
|
def address_component(address_component_type, address_component_length)
|
@@ -136,5 +139,21 @@ module GooglePlaces
|
|
136
139
|
@address_components.select{ |c| c['types'].include?(type.to_s) } unless @address_components.nil?
|
137
140
|
end
|
138
141
|
|
142
|
+
def reviews_component(json_reviews)
|
143
|
+
if json_reviews
|
144
|
+
json_reviews.map { |r|
|
145
|
+
Review.new(
|
146
|
+
r['aspects'].empty? ? nil : r['aspects'][0]['rating'],
|
147
|
+
r['aspects'].empty? ? nil : r['aspects'][0]['type'],
|
148
|
+
r['author_name'],
|
149
|
+
r['author_url'],
|
150
|
+
r['text'],
|
151
|
+
r['time'].to_i
|
152
|
+
)
|
153
|
+
}
|
154
|
+
else []
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
139
158
|
end
|
140
159
|
end
|
@@ -116,9 +116,6 @@ describe GooglePlaces::Spot do
|
|
116
116
|
|
117
117
|
end
|
118
118
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
119
|
context 'List spots by query' do
|
123
120
|
use_vcr_cassette 'list_spots'
|
124
121
|
|
@@ -145,6 +142,14 @@ describe GooglePlaces::Spot do
|
|
145
142
|
@spot.respond_to?(attribute).should == true
|
146
143
|
end
|
147
144
|
end
|
145
|
+
it 'should contain 5 reviews' do
|
146
|
+
@spot.reviews.size == 5
|
147
|
+
end
|
148
|
+
%w(rating type author_name author_url text time).each do |attribute|
|
149
|
+
it "should have the review attribute: #{attribute}" do
|
150
|
+
@spot.reviews[0].respond_to?(attribute).should be true
|
151
|
+
end
|
152
|
+
end
|
148
153
|
end
|
149
154
|
|
150
155
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google_places
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Marcel de Graaf
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-07-
|
18
|
+
date: 2012-07-14 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: httparty
|
@@ -94,6 +94,7 @@ files:
|
|
94
94
|
- lib/google_places/error.rb
|
95
95
|
- lib/google_places/location.rb
|
96
96
|
- lib/google_places/request.rb
|
97
|
+
- lib/google_places/review.rb
|
97
98
|
- lib/google_places/spot.rb
|
98
99
|
- spec/api_key.sample.rb
|
99
100
|
- spec/google_places/client_spec.rb
|