Class: GooglePlaces::Request
- Inherits:
-
Object
- Object
- GooglePlaces::Request
- Includes:
- HTTParty
- Defined in:
- lib/google_places/request.rb
Overview
This class performs the queries on the API
Constant Summary collapse
- NEARBY_SEARCH_URL =
'https://maps.googleapis.com/maps/api/place/nearbysearch/json'
- DETAILS_URL =
'https://maps.googleapis.com/maps/api/place/details/json'
- PHOTO_URL =
'https://maps.googleapis.com/maps/api/place/photo'
- TEXT_SEARCH_URL =
'https://maps.googleapis.com/maps/api/place/textsearch/json'
- PAGETOKEN_URL =
'https://maps.googleapis.com/maps/api/place/search/json'
- RADAR_SEARCH_URL =
'https://maps.googleapis.com/maps/api/place/radarsearch/json'
Instance Attribute Summary collapse
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#response ⇒ HTTParty::Response
The retrieved response from the API.
Class Method Summary collapse
-
.photo_url(options = {}) ⇒ URL
Search for a Photo’s URL with a reference key.
-
.spot(options = {}) ⇒ Spot
Search for a Spot with a place_id key.
-
.spots(options = {}) ⇒ Array<Spot>
Search for Spots at the provided location.
-
.spots_by_pagetoken(options = {}) ⇒ Array<Spot>
Search for Spots with a page token.
-
.spots_by_query(options = {}) ⇒ Array<Spot>
Search for Spots with a query.
- .spots_by_radar(options = {}) ⇒ Object
Instance Method Summary collapse
- #execute ⇒ Object
-
#initialize(url, options, follow_redirects = true) ⇒ Request
constructor
Create a new Request for a given uri and the provided params.
-
#parsed_response ⇒ String
Parse errors from the server respons, if any.
Constructor Details
#initialize(url, options, follow_redirects = true) ⇒ Request
Create a new Request for a given uri and the provided params
264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 |
# File 'lib/google_places/request.rb', line 264 def initialize(url, , follow_redirects = true) = .delete(:retry_options) || {} [:status] ||= [] [:max] ||= 0 [:delay] ||= 5 [:status] = [[:status]] unless [:status].is_a?(Array) @response = self.class.get(url, :query => , :follow_redirects => follow_redirects) # puts "@response.request.last_uri.to_s" # puts @response.request.last_uri.to_s return unless [:max] > 0 && [:status].include?(@response.parsed_response['status']) retry_request = proc do for i in (1..[:max]) sleep([:delay]) @response = self.class.get(url, :query => , :follow_redirects => follow_redirects) break unless [:status].include?(@response.parsed_response['status']) end end if [:timeout] begin Timeout::timeout([:timeout]) do retry_request.call end rescue Timeout::Error raise RetryTimeoutError.new(@response) end else retry_request.call raise RetryError.new(@response) if [:status].include?(@response.parsed_response['status']) end end |
Instance Attribute Details
#options ⇒ Object (readonly)
Returns the value of attribute options.
6 7 8 |
# File 'lib/google_places/request.rb', line 6 def @options end |
#response ⇒ HTTParty::Response
Returns the retrieved response from the API.
5 6 7 |
# File 'lib/google_places/request.rb', line 5 def response @response end |
Class Method Details
.photo_url(options = {}) ⇒ URL
Search for a Photo’s URL with a reference key
218 219 220 221 |
# File 'lib/google_places/request.rb', line 218 def self.photo_url( = {}) request = new(PHOTO_URL, , false) request.parsed_response end |
.spot(options = {}) ⇒ Spot
Search for a Spot with a place_id key
86 87 88 89 |
# File 'lib/google_places/request.rb', line 86 def self.spot( = {}) request = new(DETAILS_URL, ) request.parsed_response end |
.spots(options = {}) ⇒ Array<Spot>
Search for Spots at the provided location
58 59 60 61 |
# File 'lib/google_places/request.rb', line 58 def self.spots( = {}) request = new(NEARBY_SEARCH_URL, ) request.parsed_response end |
.spots_by_pagetoken(options = {}) ⇒ Array<Spot>
Search for Spots with a page token
191 192 193 194 |
# File 'lib/google_places/request.rb', line 191 def self.spots_by_pagetoken( = {}) request = new(PAGETOKEN_URL, ) request.parsed_response end |
.spots_by_query(options = {}) ⇒ Array<Spot>
Search for Spots with a query
171 172 173 174 |
# File 'lib/google_places/request.rb', line 171 def self.spots_by_query( = {}) request = new(TEXT_SEARCH_URL, ) request.parsed_response end |
.spots_by_radar(options = {}) ⇒ Object
133 134 135 136 |
# File 'lib/google_places/request.rb', line 133 def self.spots_by_radar( = {}) request = new(RADAR_SEARCH_URL, ) request.parsed_response end |
Instance Method Details
#execute ⇒ Object
304 305 306 |
# File 'lib/google_places/request.rb', line 304 def execute @response = self.class.get(url, :query => , :follow_redirects => follow_redirects) end |
#parsed_response ⇒ String
Parse errors from the server respons, if any
315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 |
# File 'lib/google_places/request.rb', line 315 def parsed_response return @response.headers["location"] if @response.code >= 300 and @response.code < 400 case @response.parsed_response['status'] when 'OK', 'ZERO_RESULTS' @response.parsed_response when 'OVER_QUERY_LIMIT' raise OverQueryLimitError.new(@response) when 'REQUEST_DENIED' raise RequestDeniedError.new(@response) when 'INVALID_REQUEST' raise InvalidRequestError.new(@response) when 'UNKNOWN_ERROR' raise UnknownError.new(@response) when 'NOT_FOUND' raise NotFoundError.new(@response) end end |