google_maps_geocoder 0.7.10 → 1.0.1

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: 3126baa6f246df340f154bbe7a1ba9ed6df01748309e1c19fe812bd7a6fbb79d
4
- data.tar.gz: dd6e0372f6cb04cdc1cf659cecb2284b0eddac1c1da0a4854915e2ae75510575
3
+ metadata.gz: a1b75a6d688d7ae2c78598419106c233c97b4e3d3670de878f91cdba8c12d920
4
+ data.tar.gz: 3df70e06f88e78962ca11daf667c2e03057de045883534d8c80eb52cc4119edd
5
5
  SHA512:
6
- metadata.gz: 5b6a03c9acb411000e808021112c4d28d83546c9b6cf9bf6eea22c067f33a6206f84dbd1efb4a4111a7e26ab07ffac0c4a2bb7daa570d3ed9fd888a40cadbfd8
7
- data.tar.gz: 1c2125dad69b7b11dec1645f0f9b7dfefd42c19ea2101ae78ea02bb1dc0f30851804f819bc30e9efe7e199b2fd10fe77774df698b7f22e95fa41620ad76f5710
6
+ metadata.gz: 204f47f4a4b6ee052e21c2f8fb16664dfb0cd7ea69e65b52522842cd0514d68c452209ca17e0a639c7f1acdb2bf817346a700eee6a3667457cd7ab4c047379e9
7
+ data.tar.gz: e2d04e07a9d445f9795a7226be2327b0a29921923ca1471b8cdfa74b1436aca4db9a68315198d3dd228c87c62148e1eeb4d5983197bc8bfbff135dd6be4abd19
checksums.yaml.gz.sig CHANGED
Binary file
@@ -0,0 +1,14 @@
1
+ # These are supported funding model platforms
2
+
3
+ github: ivanoblomov
4
+ patreon: # Replace with a single Patreon username
5
+ open_collective: # Replace with a single Open Collective username
6
+ ko_fi: # Replace with a single Ko-fi username
7
+ tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8
+ community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9
+ liberapay: # Replace with a single Liberapay username
10
+ issuehunt: # Replace with a single IssueHunt username
11
+ lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
12
+ polar: # Replace with a single Polar username
13
+ buy_me_a_coffee: oblomov
14
+ custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
@@ -9,3 +9,7 @@ updates:
9
9
  directory: "/" # Location of package manifests
10
10
  schedule:
11
11
  interval: "daily"
12
+ - package-ecosystem: "github-actions"
13
+ directory: "/"
14
+ schedule:
15
+ interval: "weekly"
@@ -12,10 +12,10 @@ jobs:
12
12
  name: Ruby ${{ matrix.ruby-version }}
13
13
  strategy:
14
14
  matrix:
15
- ruby-version: [2.5, 2.6, 2.7, '3.0']
15
+ ruby-version: ['3.0', 3.1, 3.2, 3.3]
16
16
  steps:
17
17
  - name: Checkout code
18
- uses: actions/checkout@v2
18
+ uses: actions/checkout@v4
19
19
  - name: Set up Ruby ${{ matrix.ruby-version }}
20
20
  uses: ruby/setup-ruby@v1
21
21
  with:
data/.rubocop.yml ADDED
@@ -0,0 +1,7 @@
1
+ require:
2
+ - rubocop-performance
3
+ - rubocop-rake
4
+ - rubocop-rspec
5
+
6
+ AllCops:
7
+ NewCops: enable
data/Gemfile CHANGED
@@ -5,10 +5,11 @@ gemspec
5
5
 
6
6
  gem 'inch', '~> 0.8'
7
7
  gem 'pry', '~> 0.14.1'
8
- gem 'rake', ['>= 12.3.3', '~> 13.0']
8
+ gem 'rake', '~> 13'
9
9
  gem 'rspec', '~> 3'
10
- gem 'rubocop', '< 1.29'
11
- gem 'rubocop-rake', '~> 0'
12
- gem 'rubocop-rspec', '~> 2'
10
+ gem 'rubocop', '< 1.68'
11
+ gem 'rubocop-performance', require: false
12
+ gem 'rubocop-rake', require: false
13
+ gem 'rubocop-rspec', require: false
13
14
  gem 'simplecov', '~> 0.18'
14
15
  gem 'simplecov-lcov', '~> 0.8'
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011-2022 Roderick Monje
1
+ Copyright (c) 2011-2024 Roderick Monje
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -108,10 +108,6 @@ Complete RDoc documentation is available at [RubyDoc.info](https://www.rubydoc.i
108
108
 
109
109
  ## [Contributing to GoogleMapsGeocoder](.github/CONTRIBUTING.md)
110
110
 
111
- ## Cheers!
112
-
113
- <a href="https://www.buymeacoffee.com/oblomov" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-green.png" alt="Buy Me A Coffee" height="41" width="174" ></a>
114
-
115
111
  ## Copyright
116
112
 
117
- Copyright © 2011-2022 Roderick Monje. See [LICENSE.txt](LICENSE.txt) for further details.
113
+ Copyright © 2011-2024 Roderick Monje. See [LICENSE.txt](LICENSE.txt) for further details.
data/SECURITY.md CHANGED
@@ -6,8 +6,8 @@
6
6
 
7
7
  | Version | Supported |
8
8
  | ------- | ------------------ |
9
- | 0.7.10 | :white_check_mark: |
10
- | < 0.7.10 | :x: |
9
+ | 1.0.1 | :white_check_mark: |
10
+ | < 1.0.1 | :x: |
11
11
 
12
12
  ## Reporting a Vulnerability
13
13
 
@@ -1,25 +1,26 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- R8L0HPEE/1NjNLrlNG1DhJ8MAbYFA7mo4bWp4kjXwVdw+TMQZfrLjXLgmfiTvzxV
18
- cE10liYjCWQNxectkkYmOsCBlEDfOngNKdl3QJ+Y5+SEsqfKYhZXZypn+SwuXx8F
19
- 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
- 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
- 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
- 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
- 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
- kvv576EuULmQcLpOKwB3RlxAG7j8JJl4ueqjF+rz7x1lBqEU
2
+ MIIEeDCCAuCgAwIBAgIBATANBgkqhkiG9w0BAQsFADBBMQwwCgYDVQQDDANyb2Qx
3
+ HDAaBgoJkiaJk/IsZAEZFgxmb3ZlYWNlbnRyYWwxEzARBgoJkiaJk/IsZAEZFgNj
4
+ b20wHhcNMjQwMzI5MjIzNDUxWhcNMjUwMzI5MjIzNDUxWjBBMQwwCgYDVQQDDANy
5
+ b2QxHDAaBgoJkiaJk/IsZAEZFgxmb3ZlYWNlbnRyYWwxEzARBgoJkiaJk/IsZAEZ
6
+ FgNjb20wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC6asLzbFQpchSv
7
+ u+05KuCzQW39QZq65t3c0kfUsIx+WREjBw2QlM6jVItYj4euRRszLwxhSMCtMsno
8
+ Fhas9eZ47esUhxIElQngrsBP0kwLUHQj/EYCDVN2xnMlicoE0zgOXiUkk6PTZZme
9
+ 8SYSFJANVDOdRgr5Q17nWQKPS1l3OqoD+fkM+kO/ey2KTXvv4AFxfwe9o/bk6LjF
10
+ f4AzxKPmxsYbtgJHiu38gYb2IMh5JE5B0dUQ5pnQJbdTNtHI9YWoVpyIhIj/aOwN
11
+ t9lKjWhObPgfQ7Z5bEWSWvuPnGD1zj0/Y1MNJ99M4Bt1t5OkS3L1zjg1H3ulYRlB
12
+ VWFIwC8esooXXWqG5s2XCtVjugOo1seXv8PIOCPM1HBLfYjlWAwGy0oA0kAtAs+4
13
+ OlciDLHwCJO/ChIeLNaW3f6WiDmcwI8MeyxXxw64kX9QSKP0muM4+GtE9619hPFK
14
+ RMXUFKNUlrZ6gcpyX5weP2OKwd9Z7LkVsK/lgyxyaDqGwuajBGkCAwEAAaN7MHkw
15
+ CQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFO1rwHyxg39rlp0MN5Kj
16
+ s1uxvHyiMB8GA1UdEQQYMBaBFHJvZEBmb3ZlYWNlbnRyYWwuY29tMB8GA1UdEgQY
17
+ MBaBFHJvZEBmb3ZlYWNlbnRyYWwuY29tMA0GCSqGSIb3DQEBCwUAA4IBgQBg9aO1
18
+ 1OhvQMbzefkcxE1QxuqwGzBh8kNiE2JL5FSGTtgFbXKqM1eeA0GWeZnksSVXOX40
19
+ 01HDxW8CHdBnyNGorJPgbypZNI+gpi5bYKox0en7jj+88k9VA4fIbR+a/6sUSDsZ
20
+ 82qpicz/Q+qkfnhQxHJ1Cj0lrZBq0Kuc+ooNxE4U3VT25CQCvUN9dlgyMZsH15ND
21
+ DpektzMLDzH4suOVGK09j7C3sTyVdwI5UkN8ix27Me0N4zPxjjYo0HFXIRNhEjVF
22
+ DWm9LGr9npmhQtd3A3ZyASawp+UUZ5pdc57YaBRDrJdFZr9056MpeByj+Fsg5Jkh
23
+ 4o08iHs5bMPDyXBcj5XsYDLwAwTANPjGWGRNvrnY3KGGWdRMgtni3NJyMRCZ5tIT
24
+ UNicoJ8NJMgduyTPvZBJtvUPddQr1yAL66/l+CFewbGb/1DbqfSvA2atfUobhDrG
25
+ zYKOF/ofPEZhX7sqLK5GzDW4x1QDHAgr1YIdttVxhHADOxF4EVSJCHH0RGw=
25
26
  -----END CERTIFICATE-----
@@ -6,18 +6,19 @@ Gem::Specification.new do |s|
6
6
  s.version = GoogleMapsGeocoder::VERSION.dup
7
7
  s.licenses = ['MIT']
8
8
  s.summary = 'A simple PORO wrapper for geocoding with Google Maps.'
9
- s.description = 'Geocode a location without worrying about parsing Google '\
10
- "Maps' response. GoogleMapsGeocoder wraps it in a plain-old "\
9
+ s.description = 'Geocode a location without worrying about parsing Google ' \
10
+ "Maps' response. GoogleMapsGeocoder wraps it in a plain-old " \
11
11
  'Ruby object.'
12
12
  s.homepage = 'https://github.com/FoveaCentral/google_maps_geocoder'
13
13
  s.authors = ['Roderick Monje']
14
14
  s.cert_chain = ['certs/ivanoblomov.pem']
15
15
  s.email = 'rod@foveacentral.com'
16
- s.signing_key = File.expand_path('~/.ssh/gem-private_key.pem') if $PROGRAM_NAME =~ /gem\z/
16
+ s.signing_key = File.expand_path('~/.ssh/gem-private_key.pem') if $PROGRAM_NAME.end_with?('gem')
17
17
 
18
- s.add_runtime_dependency 'rack', '>= 2.1.4', '< 3.1.0'
18
+ s.add_dependency 'rack', '>= 2.1.4', '< 3.2.0'
19
19
 
20
20
  s.files = `git ls-files`.split "\n"
21
21
  s.require_paths = ['lib']
22
- s.required_ruby_version = '>= 2.5'
22
+ s.required_ruby_version = '>= 3.0'
23
+ s.metadata['rubygems_mfa_required'] = 'true'
23
24
  end
@@ -128,15 +128,15 @@ class GoogleMapsGeocoder
128
128
  if (message = @json['error_message'])
129
129
  Logger.new($stderr).error(message)
130
130
  end
131
- super @json['status']
131
+ super(@json)
132
132
  end
133
133
  end
134
134
 
135
135
  private
136
136
 
137
137
  def google_maps_request(address)
138
- "#{GOOGLE_MAPS_API}?address=#{Rack::Utils.escape address}"\
139
- "&key=#{ENV['GOOGLE_MAPS_API_KEY']}"
138
+ "#{GOOGLE_MAPS_API}?address=#{Rack::Utils.escape address}" \
139
+ "&key=#{ENV.fetch('GOOGLE_MAPS_API_KEY', nil)}"
140
140
  end
141
141
 
142
142
  def google_maps_response(address)
@@ -181,8 +181,8 @@ class GoogleMapsGeocoder
181
181
  end
182
182
 
183
183
  def parse_formatted_street_address
184
- "#{parse_address_component_type('street_number')} "\
185
- "#{parse_address_component_type('route')}"
184
+ "#{parse_address_component_type('street_number')} " \
185
+ "#{parse_address_component_type('route')}"
186
186
  end
187
187
 
188
188
  def parse_lat
@@ -207,7 +207,7 @@ class GoogleMapsGeocoder
207
207
 
208
208
  def set_attributes_from_json
209
209
  ALL_ADDRESS_SEGMENTS.each do |segment|
210
- instance_variable_set :"@#{segment}", send("parse_#{segment}")
210
+ instance_variable_set :"@#{segment}", send(:"parse_#{segment}")
211
211
  end
212
212
  end
213
213
  end
@@ -3,5 +3,5 @@
3
3
  # A simple PORO wrapper for geocoding with Google Maps.
4
4
  class GoogleMapsGeocoder
5
5
  # This gem's version.
6
- VERSION = '0.7.10' unless defined?(GoogleMapsGeocoder::VERSION)
6
+ VERSION = '1.0.1' unless defined?(GoogleMapsGeocoder::VERSION)
7
7
  end
@@ -6,70 +6,114 @@ require "#{File.dirname(__FILE__)}/../spec_helper"
6
6
  # rubocop:disable Metrics/BlockLength
7
7
  RSpec.describe GoogleMapsGeocoder do
8
8
  describe '#new' do
9
- context 'with "White House"' do
10
- subject(:geocoder) do
11
- GoogleMapsGeocoder.new('White House')
12
- rescue SocketError
13
- pending 'waiting for a network connection'
14
- rescue GoogleMapsGeocoder::GeocodingError
15
- pending 'waiting for query limit to pass'
16
- end
9
+ context 'when API key is valid' do
10
+ # rubocop:disable RSpec/NestedGroups
11
+ context 'with "White House"' do
12
+ subject(:geocoder) do
13
+ described_class.new('White House')
14
+ rescue SocketError
15
+ pending 'waiting for a network connection'
16
+ rescue GoogleMapsGeocoder::GeocodingError => e
17
+ raise if e.json['status'] == 'REQUEST_DENIED'
18
+
19
+ pending 'waiting for query limit to pass'
20
+ end
17
21
 
18
- it { should be_partial_match }
19
- it { should_not be_exact_match }
22
+ it { is_expected.to be_partial_match }
23
+ it { is_expected.not_to be_exact_match }
20
24
 
21
- context 'address' do
22
- it do
23
- expect(geocoder.formatted_street_address)
24
- .to eq '1600 Pennsylvania Avenue Northwest'
25
+ describe '#formatted_street_address' do
26
+ it { expect(geocoder.formatted_street_address).to eq '1600 Pennsylvania Avenue Northwest' }
25
27
  end
26
- it { expect(geocoder.city).to eq 'Washington' }
27
- it { expect(geocoder.state_long_name).to eq 'District of Columbia' }
28
- it { expect(geocoder.state_short_name).to eq 'DC' }
29
- it { expect(geocoder.postal_code).to eq '20500' }
30
- it { expect(geocoder.country_short_name).to eq 'US' }
31
- it { expect(geocoder.country_long_name).to eq 'United States' }
32
- it do
33
- expect(geocoder.formatted_address)
34
- .to match(/1600 Pennsylvania Avenue NW, Washington, DC 20500, USA/)
28
+
29
+ describe '#city' do
30
+ it { expect(geocoder.city).to eq 'Washington' }
35
31
  end
36
- end
37
32
 
38
- context 'coordinates' do
39
- it { expect(geocoder.lat).to be_within(0.005).of(38.8976633) }
40
- it { expect(geocoder.lng).to be_within(0.005).of(-77.0365739) }
41
- end
33
+ describe '#state_long_name' do
34
+ it { expect(geocoder.state_long_name).to eq 'District of Columbia' }
35
+ end
36
+
37
+ describe '#state_short_name' do
38
+ it { expect(geocoder.state_short_name).to eq 'DC' }
39
+ end
40
+
41
+ describe '#postal_code' do
42
+ it { expect(geocoder.postal_code).to eq '20500' }
43
+ end
44
+
45
+ describe '#country_short_name' do
46
+ it { expect(geocoder.country_short_name).to eq 'US' }
47
+ end
48
+
49
+ describe '#country_long_name' do
50
+ it { expect(geocoder.country_long_name).to eq 'United States' }
51
+ end
52
+
53
+ describe '#formatted_address' do
54
+ it { expect(geocoder.formatted_address).to match(/1600 Pennsylvania Avenue NW, Washington, DC 20500, USA/) }
55
+ end
56
+
57
+ describe '#lat' do
58
+ it { expect(geocoder.lat).to be_within(0.005).of(38.8976633) }
59
+ end
42
60
 
43
- context 'Geocoder API' do
44
- it { expect(geocoder.address).to eq subject.formatted_address }
45
- it { expect(geocoder.coordinates).to eq [subject.lat, subject.lng] }
46
- it { expect(geocoder.country).to eq subject.country_long_name }
47
- it { expect(geocoder.country_code).to eq subject.country_short_name }
48
- it { expect(geocoder.latitude).to eq subject.lat }
49
- it { expect(geocoder.longitude).to eq subject.lng }
50
- it { expect(geocoder.state).to eq subject.state_long_name }
51
- it { expect(geocoder.state_code).to eq subject.state_short_name }
61
+ describe '#lng' do
62
+ it { expect(geocoder.lng).to be_within(0.005).of(-77.0365739) }
63
+ end
64
+
65
+ context 'when using Geocoder API' do
66
+ describe '#address' do
67
+ it { expect(geocoder.address).to eq geocoder.formatted_address }
68
+ end
69
+
70
+ describe '#coordinates' do
71
+ it { expect(geocoder.coordinates).to eq [geocoder.lat, geocoder.lng] }
72
+ end
73
+
74
+ describe '#country' do
75
+ it { expect(geocoder.country).to eq geocoder.country_long_name }
76
+ end
77
+
78
+ describe '#country_code' do
79
+ it { expect(geocoder.country_code).to eq geocoder.country_short_name }
80
+ end
81
+
82
+ describe '#latitude' do
83
+ it { expect(geocoder.latitude).to eq geocoder.lat }
84
+ end
85
+
86
+ describe '#longitude' do
87
+ it { expect(geocoder.longitude).to eq geocoder.lng }
88
+ end
89
+
90
+ describe '#state' do
91
+ it { expect(geocoder.state).to eq geocoder.state_long_name }
92
+ end
93
+
94
+ describe '#state_code' do
95
+ it { expect(geocoder.state_code).to eq geocoder.state_short_name }
96
+ end
97
+ end
52
98
  end
99
+ # rubocop:enable RSpec/NestedGroups
53
100
  end
54
101
 
55
102
  context 'when API key is invalid' do
56
- around do |example|
57
- original_key = ENV['GOOGLE_MAPS_API_KEY']
58
- ENV['GOOGLE_MAPS_API_KEY'] = 'invalid_key'
59
- example.run
60
- ENV['GOOGLE_MAPS_API_KEY'] = original_key
61
- end
62
-
63
103
  subject(:geocoder) do
64
- GoogleMapsGeocoder.new('nowhere that comes to mind')
104
+ described_class.new('nowhere that comes to mind')
65
105
  rescue SocketError
66
106
  pending 'waiting for a network connection'
67
107
  end
68
108
 
69
- it do
70
- expect { geocoder }.to raise_error GoogleMapsGeocoder::GeocodingError,
71
- 'REQUEST_DENIED'
109
+ around do |example|
110
+ original_key = ENV.fetch('GOOGLE_MAPS_API_KEY', nil)
111
+ ENV['GOOGLE_MAPS_API_KEY'] = 'invalid_key'
112
+ example.run
113
+ ENV['GOOGLE_MAPS_API_KEY'] = original_key
72
114
  end
115
+
116
+ it { expect { geocoder }.to raise_error GoogleMapsGeocoder::GeocodingError }
73
117
  end
74
118
  end
75
119
  end
data/spec/spec_helper.rb CHANGED
@@ -16,12 +16,12 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
16
16
  require 'google_maps_geocoder/google_maps_geocoder'
17
17
  # silence output
18
18
  RSpec.configure do |config|
19
- config.before(:example) do
19
+ config.before do
20
20
  quiet_logger = Logger.new(IO::NULL)
21
21
  allow(Logger).to receive(:new).and_return(quiet_logger)
22
22
  end
23
23
 
24
- config.after(:example) do
24
+ config.after do
25
25
  allow(Logger).to receive(:new).and_call_original
26
26
  end
27
27
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_maps_geocoder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.10
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roderick Monje
@@ -10,31 +10,32 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- lR8SnXcsohvP/eIY2BTyBay0eOb9BwGHmnAVRiiAfLvCftzHtBEBr6jCKESSYDuc
33
- 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
- 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
- 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
36
37
  -----END CERTIFICATE-----
37
- date: 2022-09-27 00:00:00.000000000 Z
38
+ date: 2024-10-31 00:00:00.000000000 Z
38
39
  dependencies:
39
40
  - !ruby/object:Gem::Dependency
40
41
  name: rack
@@ -45,7 +46,7 @@ dependencies:
45
46
  version: 2.1.4
46
47
  - - "<"
47
48
  - !ruby/object:Gem::Version
48
- version: 3.1.0
49
+ version: 3.2.0
49
50
  type: :runtime
50
51
  prerelease: false
51
52
  version_requirements: !ruby/object:Gem::Requirement
@@ -55,7 +56,7 @@ dependencies:
55
56
  version: 2.1.4
56
57
  - - "<"
57
58
  - !ruby/object:Gem::Version
58
- version: 3.1.0
59
+ version: 3.2.0
59
60
  description: Geocode a location without worrying about parsing Google Maps' response.
60
61
  GoogleMapsGeocoder wraps it in a plain-old Ruby object.
61
62
  email: rod@foveacentral.com
@@ -65,6 +66,7 @@ extra_rdoc_files: []
65
66
  files:
66
67
  - ".document"
67
68
  - ".github/CONTRIBUTING.md"
69
+ - ".github/FUNDING.yml"
68
70
  - ".github/ISSUE_TEMPLATE/bug-report.md"
69
71
  - ".github/ISSUE_TEMPLATE/feature_request.md"
70
72
  - ".github/ISSUE_TEMPLATE/task.md"
@@ -72,6 +74,7 @@ files:
72
74
  - ".github/dependabot.yml"
73
75
  - ".github/workflows/test.yml"
74
76
  - ".gitignore"
77
+ - ".rubocop.yml"
75
78
  - ".simplecov"
76
79
  - CODE_OF_CONDUCT.md
77
80
  - Gemfile
@@ -88,7 +91,8 @@ files:
88
91
  homepage: https://github.com/FoveaCentral/google_maps_geocoder
89
92
  licenses:
90
93
  - MIT
91
- metadata: {}
94
+ metadata:
95
+ rubygems_mfa_required: 'true'
92
96
  post_install_message:
93
97
  rdoc_options: []
94
98
  require_paths:
@@ -97,14 +101,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
97
101
  requirements:
98
102
  - - ">="
99
103
  - !ruby/object:Gem::Version
100
- version: '2.5'
104
+ version: '3.0'
101
105
  required_rubygems_version: !ruby/object:Gem::Requirement
102
106
  requirements:
103
107
  - - ">="
104
108
  - !ruby/object:Gem::Version
105
109
  version: '0'
106
110
  requirements: []
107
- rubygems_version: 3.1.6
111
+ rubygems_version: 3.5.6
108
112
  signing_key:
109
113
  specification_version: 4
110
114
  summary: A simple PORO wrapper for geocoding with Google Maps.
metadata.gz.sig CHANGED
Binary file