googlemaps-services 1.3.0 → 1.3.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f9af6339c46954459057f1f720aa53f4275158c2
4
- data.tar.gz: e167756c771106d77778d36284960c429cb9105f
3
+ metadata.gz: 9a29bf1ab90463cf58a2920a07ea63a791cf6637
4
+ data.tar.gz: 27203036b8394d7f9bb304864f8156fd0c454ded
5
5
  SHA512:
6
- metadata.gz: dba8b6e7c27f3ddd0e90ef28d981930ab97c148a7202b3b98862a0bd18d8c80467b15df9751bb17827f596dbc3592eca30a0c988e5e7fdb31f1ce989f13d5c22
7
- data.tar.gz: ab24f530bae29cf059851bfcea3682766b693909addb9dfa16e37e7d1379be0c4f8a59eecb1c271bb2cef2b0fee89ab5e5c28b2439b0ee9f5c7c5895c6f58b9e
6
+ metadata.gz: 5cdbce608cb68fe2b5fb418e8f4193f0c8d137f1239ec26efa9c58919e1eac2099b1c2dd261fc4e729f3a096e01d32f93bd55bff66e22404299a500899b91d75
7
+ data.tar.gz: 9b6422d246c467abe6d29db91239e4f11abbf48e72c10584ba55e0f54234dc18fb60e8dca44661e6c840f6168f07acdf78254409e27c99294a3bee5494ae698e
@@ -105,9 +105,7 @@ module GoogleMaps
105
105
  # @return [Hash, Array, nil] response body (either in JSON or XML) or nil.
106
106
  def get(url:, params:, first_request_time: nil, retry_counter: nil, base_url: DEFAULT_BASE_URL,
107
107
  accepts_clientid: true, extract_body: nil, request_headers: nil)
108
- unless first_request_time
109
- first_request_time = Util.current_time
110
- end
108
+ first_request_time = Util.current_time unless first_request_time
111
109
 
112
110
  elapsed = Time.now - first_request_time
113
111
  if elapsed > self.retry_timeout
@@ -120,7 +118,7 @@ module GoogleMaps
120
118
  # at 1, so subtract that first.
121
119
  delay_seconds = 0.5 * 1.5 ** (retry_counter - 1)
122
120
  # Jitter this value by 50% and pause.
123
- sleep(delay_seconds * (random.random + 0.5))
121
+ sleep(delay_seconds * (Random.rand + 0.5))
124
122
  end
125
123
 
126
124
  authed_url = generate_auth_url(url, params, accepts_clientid)
@@ -219,8 +217,6 @@ module GoogleMaps
219
217
 
220
218
  if body.key?('error_message')
221
219
  raise APIError.new(api_status), body['error_message']
222
- else
223
- raise APIError.new(api_status)
224
220
  end
225
221
  end
226
222
 
@@ -257,8 +253,6 @@ module GoogleMaps
257
253
  error_message = doc.xpath('//error_message')
258
254
  if error_message
259
255
  raise APIError.new(api_status), error_message.text
260
- else
261
- raise APIError.new(api_status)
262
256
  end
263
257
  end
264
258
 
@@ -304,12 +298,10 @@ module GoogleMaps
304
298
  return path + '&signature=' + sig
305
299
  end
306
300
 
307
- if self.key
308
- params['key'] = self.key
309
- return path + '?' + Util.urlencode_params(params)
310
- end
301
+ raise StandardError, 'Must provide API key for this API. It does not accept enterprise credentials.' unless self.key
311
302
 
312
- raise StandardError, 'Must provide API key for this API. It does not accept enterprise credentials.'
303
+ params['key'] = self.key
304
+ return path + '?' + Util.urlencode_params(params)
313
305
  end
314
306
 
315
307
  private :get_json_body, :get_xml_body, :get_map_image, :get_redirection_url, :generate_auth_url
@@ -67,7 +67,7 @@ module GoogleMaps
67
67
  # Performs requests to the Google Maps Geocoding API.
68
68
  #
69
69
  # @example
70
- # reverse_geocode = GoogleMaps::Services::ReverseGeocode(client)
70
+ # reverse_geocode = GoogleMaps::Services::ReverseGeocode.new(client)
71
71
  # result = reverse_geocode.query(latlng: {:lat => 52.520645, :lng => 13.409779}, language: "fr")
72
72
  class ReverseGeocode
73
73
  attr_accessor :client
@@ -42,6 +42,8 @@ module GoogleMaps
42
42
  # @param [String, Array] path The single path of two or more connected points to overlay in the image at the specified locations.
43
43
  # @param [String, Array] visible One or more locations that should remain visible on the map.
44
44
  # @param [String] style A custom style to alter the presentation of a specific feature (roads, parks, and other features) of the map.
45
+ #
46
+ # @return [Hash] Hash with image URL, MIME type and its base64-encoded value.
45
47
  def query(size:, center: nil, zoom: nil, scale: 1, format: "png", maptype: "roadmap",
46
48
  language: nil, region: nil, markers: nil, path: nil, visible: nil, style: nil)
47
49
  params = { 'size' => Convert.rectangular_dimensions(size) }
@@ -0,0 +1,73 @@
1
+ require 'googlemaps/services/util'
2
+
3
+ module GoogleMaps
4
+ module Services
5
+
6
+ # Performs requests to the Google Street View Map API.
7
+ #
8
+ # @example Get the street view map image
9
+ # streetview = GoogleMaps::Services::StreetViewImage.new(client)
10
+ # map_img = streetview.query(size: {:length=>400, :width=>400}, location: "40.714728,-73.998672", heading: 151.78, pitch: -0.76)
11
+ # # {
12
+ # # :url => "https://maps.googleapis.com/maps/api/streetview?size=400x400&location=40.714728%2C-73.998672&heading=151.78&pitch=-0.76",
13
+ # # :mime_type => "image/jpeg",
14
+ # # :image_data => "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHR..."
15
+ # # }
16
+ class StreetViewImage
17
+
18
+ # @return [Symbol] The HTTP client.
19
+ attr_accessor :client
20
+
21
+ def initialize(client)
22
+ self.client = client
23
+ end
24
+
25
+ # Get the street view map image.
26
+ #
27
+ # @param [Hash] size the rectangular dimensions of the street view image.
28
+ # @param [String, Hash] location The address or lat/lng value of the street view map.
29
+ # @param [String] pano A specific panorama ID.
30
+ # @param [Numeric] heading The compass heading of the camera. Accepted values are from 0 to 360.
31
+ # @param [Numeric] fov The horizontal field of view of the image. It is expressed in degrees, with a maximum allowed value of 120.
32
+ # @param [Numeric] pitch The up or down angle of the camera relative to the Street View vehicle.
33
+ # Positive values angle the camera up (with 90 degrees indicating straight up).
34
+ # Negative values angle the camera down (with -90 indicating straight down).
35
+ #
36
+ # @return [Hash] Hash with image URL, MIME type and its base64-encoded value.
37
+ def query(size:, location: nil, pano: nil, heading: nil, fov: nil, pitch: nil)
38
+ params = {
39
+ 'size' => Convert.rectangular_dimensions(size)
40
+ }
41
+
42
+ if location
43
+ params['location'] = Convert.to_latlng(location)
44
+ end
45
+
46
+ if pano
47
+ params['pano'] = pano
48
+ end
49
+
50
+ if location && pano
51
+ raise StandardError, 'should not specify both location and panorama ID.'
52
+ end
53
+
54
+ if heading
55
+ raise StandardError, 'invalid compass heading value.' unless (0..360).include? heading
56
+ params['heading'] = heading
57
+ end
58
+
59
+ if fov
60
+ raise StandardError, 'invalid field of view (fov) value.' unless (0..120).include? fov
61
+ params['fov'] = fov
62
+ end
63
+
64
+ if pitch
65
+ raise StandardError, 'invalid pitch value.' unless (-90..90).include? pitch
66
+ params['pitch'] = pitch
67
+ end
68
+
69
+ self.client.get(url: "/maps/api/streetview", params: params)
70
+ end
71
+ end
72
+ end
73
+ end
@@ -1,5 +1,5 @@
1
1
  module GoogleMaps
2
2
  module Services
3
- VERSION = '1.3.0'.freeze
3
+ VERSION = '1.3.5'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: googlemaps-services
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Faissal Elamraoui
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-18 00:00:00.000000000 Z
11
+ date: 2017-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -109,6 +109,7 @@ files:
109
109
  - lib/googlemaps/services/places.rb
110
110
  - lib/googlemaps/services/roads.rb
111
111
  - lib/googlemaps/services/staticmap.rb
112
+ - lib/googlemaps/services/streetview.rb
112
113
  - lib/googlemaps/services/timezone.rb
113
114
  - lib/googlemaps/services/util.rb
114
115
  - lib/googlemaps/services/version.rb