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'
- AUTOCOMPLETE_URL =
'https://maps.googleapis.com/maps/api/place/autocomplete/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.
-
.predictions_by_input(options = {}) ⇒ Array<Prediction>
Query for Place Predictions.
-
.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
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 265 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 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
222 223 224 225 |
# File 'lib/google_places/request.rb', line 222 def self.photo_url( = {}) request = new(PHOTO_URL, , false) request.parsed_response end |
.predictions_by_input(options = {}) ⇒ Array<Prediction>
Query for Place Predictions
199 200 201 202 |
# File 'lib/google_places/request.rb', line 199 def self.predictions_by_input( = {}) request = new(AUTOCOMPLETE_URL, ) request.parsed_response end |
.spot(options = {}) ⇒ Spot
Search for a Spot with a place_id key
81 82 83 84 |
# File 'lib/google_places/request.rb', line 81 def self.spot( = {}) request = new(DETAILS_URL, ) request.parsed_response end |
.spots(options = {}) ⇒ Array<Spot>
Search for Spots at the provided location
56 57 58 59 |
# File 'lib/google_places/request.rb', line 56 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
180 181 182 183 |
# File 'lib/google_places/request.rb', line 180 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
160 161 162 163 |
# File 'lib/google_places/request.rb', line 160 def self.spots_by_query( = {}) request = new(TEXT_SEARCH_URL, ) request.parsed_response end |
.spots_by_radar(options = {}) ⇒ Object
125 126 127 128 |
# File 'lib/google_places/request.rb', line 125 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 |