google-maps 3.0.5 → 3.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c4daaeaea85dad0ecfd2ed66cac2509ec167f3529e95d9d219818544ef097c28
4
- data.tar.gz: 197b0d42d71e4b6c536da5c5a1a828640e377cd052648fe6f53b3a5d1458a21e
3
+ metadata.gz: 63fbd8b11238001389fff8a0e84bb1fa0c9fea0f674792ca4fd5a6d7fcb1b8a5
4
+ data.tar.gz: 2dd65ff3cccabe859ac5cd12689ff2e0c039020e3ee631539e46ba22163e4124
5
5
  SHA512:
6
- metadata.gz: 20c66bd8480bb08e67e9926a493944a76d04a34086b6ad313eafcb6efbbbe3d2b8f77d69be10c1da82e4cdaf93dc81e3becf6bb9c586e863819cfc82e3469041
7
- data.tar.gz: 531cc41b79b18c66e6854c49b4fb77cfd91e6440f88ab29c8c8ebb3255a27f16e7431525b2ebef0638b8ee3daea058877f3aeb3152a7a9bfc491c7c283cd36e0
6
+ metadata.gz: e58d772e216fb6a200a74e10391550e14f57d81e8854b5e3e97ac409c0d4d057428656413e49718381077ca9589b640a6f7728a5f2ec7abb5263243c3712cb00
7
+ data.tar.gz: 3993629575a01844bfc9164bffa6015577a029549da06f7bb256ed84ec429fa718615ba78743c4c31ab0f149aa3af3fd19fbf17f7d00ecac8783ff24062ab3f9
@@ -7,7 +7,7 @@ Metrics/BlockLength:
7
7
  - "spec/**/*.rb"
8
8
  Max: 80
9
9
 
10
- Metrics/LineLength:
10
+ Layout/LineLength:
11
11
  Max: 130
12
12
 
13
13
  Metrics/MethodLength:
@@ -22,3 +22,6 @@ Naming/FileName:
22
22
 
23
23
  Style/Documentation:
24
24
  Enabled: false
25
+
26
+ Style/MethodMissingSuper:
27
+ Enabled: false
@@ -1,9 +1,9 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.2.2
4
3
  - 2.5.3
4
+ - 2.7.0
5
5
  before_install:
6
- - gem install bundler -v 1.17.3
6
+ - gem install bundler -v 2.1.2
7
7
  script:
8
8
  - bundle exec rspec
9
9
  - bundle exec rubocop
data/README.md CHANGED
@@ -66,6 +66,15 @@ end
66
66
  #=> "1 hour 12 mins"
67
67
  ```
68
68
 
69
+ ## Distance matrix
70
+
71
+ ```ruby
72
+ Google::Maps.distance_matrix("Science Park, Amsterdam", "Deventer").distance
73
+ #=> 104478
74
+ Google::Maps.distance_matrix("Science Park, Amsterdam", "Deventer").duration
75
+ #=> 4374
76
+ ```
77
+
69
78
  ### Route
70
79
 
71
80
  ```ruby
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- $:.push File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
4
4
  require 'google_maps/version'
5
5
 
6
6
  Gem::Specification.new do |s|
@@ -13,21 +13,19 @@ Gem::Specification.new do |s|
13
13
  s.summary = 'Ruby wrapper for the Google Maps API'
14
14
  s.description = 'This is a ruby wrapper for the Google Maps api'
15
15
 
16
- s.rubyforge_project = 'google-maps'
17
-
18
16
  s.files = `git ls-files`.split("\n")
19
17
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
18
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
21
19
  s.require_paths = ['lib']
22
20
 
23
- s.add_development_dependency('bundler', '~> 1.0')
21
+ s.add_development_dependency('bundler', '> 1.0')
24
22
  s.add_development_dependency('coveralls', '~> 0.8')
25
23
  s.add_development_dependency('mocha', '~> 1.7.0')
26
24
  s.add_development_dependency('rake', '~> 12.3.2')
27
- s.add_development_dependency('rspec', '~> 3.8.0')
25
+ s.add_development_dependency('rspec', '~> 3.9.0')
28
26
  s.add_development_dependency('rspec-collection_matchers', '~> 1.1')
29
27
  s.add_development_dependency('rspec-its', '~> 1.2')
30
- s.add_development_dependency('rubocop', '~> 0.61.1')
28
+ s.add_development_dependency('rubocop', '~> 0.79.0')
31
29
  s.add_development_dependency('simplecov', '~> 0.5')
32
30
  s.add_development_dependency('yard', '~> 0.9', '>= 0.9.11')
33
31
  s.add_dependency('hashie', '~> 3.6', '>= 3.6.0')
@@ -5,6 +5,7 @@ require File.expand_path('google_maps/logger', __dir__)
5
5
  require File.expand_path('google_maps/route', __dir__)
6
6
  require File.expand_path('google_maps/place', __dir__)
7
7
  require File.expand_path('google_maps/location', __dir__)
8
+ require File.expand_path('google_maps/distance_matrix', __dir__)
8
9
 
9
10
  module Google
10
11
  module Maps
@@ -31,6 +32,10 @@ module Google
31
32
  PlaceDetails.find(place_id, language)
32
33
  end
33
34
 
35
+ def self.distance_matrix(from, to, options = {})
36
+ DistanceMatrix.new(from, to, options_with_defaults(options))
37
+ end
38
+
34
39
  def self.geocode(address, language = default_language)
35
40
  Location.find(address, language)
36
41
  rescue ZeroResultsException
@@ -17,8 +17,8 @@ module Google
17
17
  class ZeroResultsException < InvalidResponseException; end
18
18
 
19
19
  class API
20
- STATUS_OK = 'OK'.freeze
21
- STATUS_ZERO_RESULTS = 'ZERO_RESULTS'.freeze
20
+ STATUS_OK = 'OK'
21
+ STATUS_ZERO_RESULTS = 'ZERO_RESULTS'
22
22
 
23
23
  class << self
24
24
  def query(service, args = {})
@@ -59,9 +59,9 @@ module Google
59
59
  def response(url)
60
60
  begin
61
61
  result = Google::Maps::Result.new JSON.parse(HTTPClient.new.get_content(url))
62
- rescue StandardError => error
63
- Google::Maps.logger.error error.message.to_s
64
- raise InvalidResponseException, "unknown error: #{error.message}"
62
+ rescue StandardError => e
63
+ Google::Maps.logger.error e.message.to_s
64
+ raise InvalidResponseException, "unknown error: #{e.message}"
65
65
  end
66
66
  handle_result_status(result.status)
67
67
  result
@@ -8,22 +8,23 @@ module Google
8
8
  # An array of valid keys in the options hash when configuring an {Google::Maps::API}
9
9
  VALID_OPTIONS_KEYS = %i[
10
10
  end_point authentication_mode client_id client_secret format
11
- directions_service places_service geocode_service
11
+ directions_service places_service geocode_service distance_matrix_service
12
12
  api_key default_language place_details_service default_params
13
13
  ].freeze
14
14
 
15
- API_KEY = 'api_key'.freeze
16
- DIGITAL_SIGNATURE = 'digital_signature'.freeze
15
+ API_KEY = 'api_key'
16
+ DIGITAL_SIGNATURE = 'digital_signature'
17
17
 
18
18
  # By default, set "https://maps.googleapis.com/maps/api/" as the server
19
- DEFAULT_END_POINT = 'https://maps.googleapis.com/maps/api/'.freeze
19
+ DEFAULT_END_POINT = 'https://maps.googleapis.com/maps/api/'
20
20
 
21
- DEFAULT_DIRECTIONS_SERVICE = 'directions'.freeze
22
- DEFAULT_PLACES_SERVICE = 'place/autocomplete'.freeze
23
- DEFAULT_PLACE_DETAILS_SERVICE = 'place/details'.freeze
24
- DEFAULT_GEOCODE_SERVICE = 'geocode'.freeze
21
+ DEFAULT_DIRECTIONS_SERVICE = 'directions'
22
+ DEFAULT_PLACES_SERVICE = 'place/autocomplete'
23
+ DEFAULT_PLACE_DETAILS_SERVICE = 'place/details'
24
+ DEFAULT_GEOCODE_SERVICE = 'geocode'
25
+ DEFAULT_DISTANCE_MATRIX_SERVICE = 'distancematrix'
25
26
 
26
- DEFAULT_FORMAT = 'json'.freeze
27
+ DEFAULT_FORMAT = 'json'
27
28
 
28
29
  # default language
29
30
  DEFAULT_LANGUAGE = :en
@@ -77,6 +78,7 @@ module Google
77
78
  self.places_service = DEFAULT_PLACES_SERVICE
78
79
  self.place_details_service = DEFAULT_PLACE_DETAILS_SERVICE
79
80
  self.geocode_service = DEFAULT_GEOCODE_SERVICE
81
+ self.distance_matrix_service = DEFAULT_DISTANCE_MATRIX_SERVICE
80
82
  self.default_language = DEFAULT_LANGUAGE
81
83
  self.default_params = DEFAULT_PARAMS
82
84
  self.authentication_mode = nil
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path('api', __dir__)
4
+
5
+ module Google
6
+ module Maps
7
+ class DistanceMatrix
8
+ attr_accessor :from, :to, :options
9
+
10
+ def initialize(from, to, options = {})
11
+ options = { language: options } unless options.is_a? Hash
12
+ @from = from
13
+ @to = to
14
+ @options = { language: :en }.merge(options)
15
+ end
16
+
17
+ def distance
18
+ element.distance.value
19
+ end
20
+
21
+ def duration
22
+ element.duration.value
23
+ end
24
+
25
+ private
26
+
27
+ def element
28
+ element = distance_matrix.rows.first.elements.first
29
+
30
+ raise Google::Maps::ZeroResultsException if element.status == 'NOT_FOUND'
31
+
32
+ element
33
+ end
34
+
35
+ def distance_matrix
36
+ @distance_matrix ||= API.query(:distance_matrix_service, @options.merge(origins: from, destinations: to))
37
+ end
38
+ end
39
+ end
40
+ end
@@ -93,13 +93,13 @@ module Google
93
93
 
94
94
  @address_components.find do |component|
95
95
  component.types.first == method_name.to_s
96
- end || super
96
+ end
97
97
  end
98
98
 
99
- def respond_to_missing?(method_name, include_private = false)
99
+ def respond_to_missing?(method_name, _include_private = false)
100
100
  @address_components.any? do |component|
101
101
  component.types.first == method_name.to_s
102
- end || super
102
+ end
103
103
  end
104
104
  end
105
105
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Google
4
4
  module Maps
5
- VERSION = '3.0.5'.freeze
5
+ VERSION = '3.0.6'
6
6
  end
7
7
  end
@@ -0,0 +1,22 @@
1
+ {
2
+ "destination_addresses" : [ "Amsterdam" ],
3
+ "origin_addresses" : [ "Utrecht" ],
4
+ "rows" : [
5
+ {
6
+ "elements" : [
7
+ {
8
+ "distance" : {
9
+ "text" : "53,7 km",
10
+ "value" : 53744
11
+ },
12
+ "duration" : {
13
+ "text" : "54 min.",
14
+ "value" : 3237
15
+ },
16
+ "status" : "OK"
17
+ }
18
+ ]
19
+ }
20
+ ],
21
+ "status" : "OK"
22
+ }
@@ -28,8 +28,8 @@ describe Google::Maps::API do
28
28
  stub_response('zero-results.json')
29
29
  begin
30
30
  Google::Maps.distance('Blah blah', 'Jalala')
31
- rescue StandardError => error
32
- @error = error
31
+ rescue StandardError => e
32
+ @error = e
33
33
  ensure
34
34
  expect(@error).not_to be_nil
35
35
  expect(@error).to be_a_kind_of StandardError
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path('../spec_helper', __dir__)
4
+
5
+ describe Google::Maps::DistanceMatrix do
6
+ describe '.find' do
7
+ subject { Google::Maps::DistanceMatrix.new('Amsterdam', 'Utrecht') }
8
+
9
+ context ':nl' do
10
+ before { stub_response('distance-matrix.json') }
11
+
12
+ its(:distance) { should eq 53_744 }
13
+ its(:duration) { should eq 3237 }
14
+ end
15
+ end
16
+ end
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-maps
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.5
4
+ version: 3.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel van Hoesel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-14 00:00:00.000000000 Z
11
+ date: 2020-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 3.8.0
75
+ version: 3.9.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 3.8.0
82
+ version: 3.9.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rspec-collection_matchers
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.61.1
117
+ version: 0.79.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 0.61.1
124
+ version: 0.79.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: simplecov
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -160,22 +160,22 @@ dependencies:
160
160
  name: hashie
161
161
  requirement: !ruby/object:Gem::Requirement
162
162
  requirements:
163
- - - ">="
164
- - !ruby/object:Gem::Version
165
- version: 3.6.0
166
163
  - - "~>"
167
164
  - !ruby/object:Gem::Version
168
165
  version: '3.6'
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: 3.6.0
169
169
  type: :runtime
170
170
  prerelease: false
171
171
  version_requirements: !ruby/object:Gem::Requirement
172
172
  requirements:
173
- - - ">="
174
- - !ruby/object:Gem::Version
175
- version: 3.6.0
176
173
  - - "~>"
177
174
  - !ruby/object:Gem::Version
178
175
  version: '3.6'
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: 3.6.0
179
179
  - !ruby/object:Gem::Dependency
180
180
  name: httpclient
181
181
  requirement: !ruby/object:Gem::Requirement
@@ -242,6 +242,7 @@ files:
242
242
  - lib/google-maps.rb
243
243
  - lib/google_maps/api.rb
244
244
  - lib/google_maps/configuration.rb
245
+ - lib/google_maps/distance_matrix.rb
245
246
  - lib/google_maps/location.rb
246
247
  - lib/google_maps/logger.rb
247
248
  - lib/google_maps/place.rb
@@ -253,6 +254,7 @@ files:
253
254
  - spec/fixtures/den-haag-nl.json
254
255
  - spec/fixtures/deventer-en.json
255
256
  - spec/fixtures/deventer-nl.json
257
+ - spec/fixtures/distance-matrix.json
256
258
  - spec/fixtures/geocoder/amsterdam-en.json
257
259
  - spec/fixtures/geocoder/science-park-400-amsterdam-en.json
258
260
  - spec/fixtures/geocoder/science-park-400-amsterdam-nl.json
@@ -260,6 +262,7 @@ files:
260
262
  - spec/fixtures/place_details.json
261
263
  - spec/fixtures/zero-results.json
262
264
  - spec/google_maps/api_spec.rb
265
+ - spec/google_maps/distance_matrix_spec.rb
263
266
  - spec/google_maps/logger_spec.rb
264
267
  - spec/google_maps/place_details_spec.rb
265
268
  - spec/google_maps/place_spec.rb
@@ -285,7 +288,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
285
288
  - !ruby/object:Gem::Version
286
289
  version: '0'
287
290
  requirements: []
288
- rubygems_version: 3.0.3
291
+ rubygems_version: 3.1.2
289
292
  signing_key:
290
293
  specification_version: 4
291
294
  summary: Ruby wrapper for the Google Maps API
@@ -295,6 +298,7 @@ test_files:
295
298
  - spec/fixtures/den-haag-nl.json
296
299
  - spec/fixtures/deventer-en.json
297
300
  - spec/fixtures/deventer-nl.json
301
+ - spec/fixtures/distance-matrix.json
298
302
  - spec/fixtures/geocoder/amsterdam-en.json
299
303
  - spec/fixtures/geocoder/science-park-400-amsterdam-en.json
300
304
  - spec/fixtures/geocoder/science-park-400-amsterdam-nl.json
@@ -302,6 +306,7 @@ test_files:
302
306
  - spec/fixtures/place_details.json
303
307
  - spec/fixtures/zero-results.json
304
308
  - spec/google_maps/api_spec.rb
309
+ - spec/google_maps/distance_matrix_spec.rb
305
310
  - spec/google_maps/logger_spec.rb
306
311
  - spec/google_maps/place_details_spec.rb
307
312
  - spec/google_maps/place_spec.rb