Class: GooglePlaces::Request

Inherits:
Object
  • Object
show all
Includes:
HTTParty
Defined in:
lib/google_places/request.rb

Constant Summary

SPOTS_LIST_URL =
'https://maps.googleapis.com/maps/api/place/search/json'
SPOT_URL =
'https://maps.googleapis.com/maps/api/place/details/json'

Instance Attribute Summary (collapse)

Class Method Summary (collapse)

Instance Method Summary (collapse)

Constructor Details

- (Request) initialize(url, options)



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/google_places/request.rb', line 23

def initialize(url, options)
  retry_options = options.delete(:retry_options) || {}

  retry_options[:status] ||= []
  retry_options[:max]    ||= 0
  retry_options[:delay]  ||= 5

  retry_options[:status] = [retry_options[:status]] unless retry_options[:status].is_a?(Array)

  @response = self.class.get(url, :query => options)

  return unless retry_options[:max] > 0 && retry_options[:status].include?(@response.parsed_response['status'])

  retry_request = proc do
    for i in (1..retry_options[:max])
      sleep(retry_options[:delay])

      @response = self.class.get(url, :query => options)

      break unless retry_options[:status].include?(@response.parsed_response['status'])
    end
  end

  if retry_options[:timeout]
    begin
      Timeout::timeout(retry_options[:timeout]) do
        retry_request.call
      end
    rescue Timeout::Error
      raise RetryTimeoutError.new(@response)
    end
  else
    retry_request.call

    raise RetryError.new(@response) if retry_options[:status].include?(@response.parsed_response['status'])
  end
end

Instance Attribute Details

- (Object) response

Returns the value of attribute response



3
4
5
# File 'lib/google_places/request.rb', line 3

def response
  @response
end

Class Method Details

+ (Object) spot(options = {})



17
18
19
20
21
# File 'lib/google_places/request.rb', line 17

def self.spot(options = {})
  # pp options
  request = new(SPOT_URL, options)
  request.parsed_response
end

+ (Object) spots(options = {})



11
12
13
14
15
# File 'lib/google_places/request.rb', line 11

def self.spots(options = {})
  # pp options
  request = new(SPOTS_LIST_URL, options)
  request.parsed_response
end

Instance Method Details

- (Object) parsed_response



61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/google_places/request.rb', line 61

def parsed_response
  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)
  end
end