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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.github/FUNDING.yml +14 -0
- data/.github/dependabot.yml +4 -0
- data/.github/workflows/test.yml +2 -2
- data/.rubocop.yml +7 -0
- data/Gemfile +5 -4
- data/LICENSE.txt +1 -1
- data/README.md +1 -5
- data/SECURITY.md +2 -2
- data/certs/ivanoblomov.pem +24 -23
- data/google_maps_geocoder.gemspec +6 -5
- data/lib/google_maps_geocoder/google_maps_geocoder.rb +6 -6
- data/lib/google_maps_geocoder/version.rb +1 -1
- data/spec/lib/google_maps_geocoder_spec.rb +92 -48
- data/spec/spec_helper.rb +2 -2
- data.tar.gz.sig +0 -0
- metadata +34 -30
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a1b75a6d688d7ae2c78598419106c233c97b4e3d3670de878f91cdba8c12d920
|
4
|
+
data.tar.gz: 3df70e06f88e78962ca11daf667c2e03057de045883534d8c80eb52cc4119edd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 204f47f4a4b6ee052e21c2f8fb16664dfb0cd7ea69e65b52522842cd0514d68c452209ca17e0a639c7f1acdb2bf817346a700eee6a3667457cd7ab4c047379e9
|
7
|
+
data.tar.gz: e2d04e07a9d445f9795a7226be2327b0a29921923ca1471b8cdfa74b1436aca4db9a68315198d3dd228c87c62148e1eeb4d5983197bc8bfbff135dd6be4abd19
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/.github/FUNDING.yml
ADDED
@@ -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']
|
data/.github/dependabot.yml
CHANGED
data/.github/workflows/test.yml
CHANGED
@@ -12,10 +12,10 @@ jobs:
|
|
12
12
|
name: Ruby ${{ matrix.ruby-version }}
|
13
13
|
strategy:
|
14
14
|
matrix:
|
15
|
-
ruby-version: [
|
15
|
+
ruby-version: ['3.0', 3.1, 3.2, 3.3]
|
16
16
|
steps:
|
17
17
|
- name: Checkout code
|
18
|
-
uses: actions/checkout@
|
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
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',
|
8
|
+
gem 'rake', '~> 13'
|
9
9
|
gem 'rspec', '~> 3'
|
10
|
-
gem 'rubocop', '< 1.
|
11
|
-
gem 'rubocop-
|
12
|
-
gem 'rubocop-
|
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
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-
|
113
|
+
Copyright © 2011-2024 Roderick Monje. See [LICENSE.txt](LICENSE.txt) for further details.
|
data/SECURITY.md
CHANGED
data/certs/ivanoblomov.pem
CHANGED
@@ -1,25 +1,26 @@
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
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
|
16
|
+
s.signing_key = File.expand_path('~/.ssh/gem-private_key.pem') if $PROGRAM_NAME.end_with?('gem')
|
17
17
|
|
18
|
-
s.
|
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 = '>=
|
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
|
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
|
-
|
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
|
-
|
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
|
@@ -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 '
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
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
|
-
|
19
|
-
|
22
|
+
it { is_expected.to be_partial_match }
|
23
|
+
it { is_expected.not_to be_exact_match }
|
20
24
|
|
21
|
-
|
22
|
-
|
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
|
-
|
27
|
-
|
28
|
-
|
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
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
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
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
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
|
-
|
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
|
-
|
70
|
-
|
71
|
-
|
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
|
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
|
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.
|
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
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
13
|
+
MIIEeDCCAuCgAwIBAgIBATANBgkqhkiG9w0BAQsFADBBMQwwCgYDVQQDDANyb2Qx
|
14
|
+
HDAaBgoJkiaJk/IsZAEZFgxmb3ZlYWNlbnRyYWwxEzARBgoJkiaJk/IsZAEZFgNj
|
15
|
+
b20wHhcNMjQwMzI5MjIzNDUxWhcNMjUwMzI5MjIzNDUxWjBBMQwwCgYDVQQDDANy
|
16
|
+
b2QxHDAaBgoJkiaJk/IsZAEZFgxmb3ZlYWNlbnRyYWwxEzARBgoJkiaJk/IsZAEZ
|
17
|
+
FgNjb20wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC6asLzbFQpchSv
|
18
|
+
u+05KuCzQW39QZq65t3c0kfUsIx+WREjBw2QlM6jVItYj4euRRszLwxhSMCtMsno
|
19
|
+
Fhas9eZ47esUhxIElQngrsBP0kwLUHQj/EYCDVN2xnMlicoE0zgOXiUkk6PTZZme
|
20
|
+
8SYSFJANVDOdRgr5Q17nWQKPS1l3OqoD+fkM+kO/ey2KTXvv4AFxfwe9o/bk6LjF
|
21
|
+
f4AzxKPmxsYbtgJHiu38gYb2IMh5JE5B0dUQ5pnQJbdTNtHI9YWoVpyIhIj/aOwN
|
22
|
+
t9lKjWhObPgfQ7Z5bEWSWvuPnGD1zj0/Y1MNJ99M4Bt1t5OkS3L1zjg1H3ulYRlB
|
23
|
+
VWFIwC8esooXXWqG5s2XCtVjugOo1seXv8PIOCPM1HBLfYjlWAwGy0oA0kAtAs+4
|
24
|
+
OlciDLHwCJO/ChIeLNaW3f6WiDmcwI8MeyxXxw64kX9QSKP0muM4+GtE9619hPFK
|
25
|
+
RMXUFKNUlrZ6gcpyX5weP2OKwd9Z7LkVsK/lgyxyaDqGwuajBGkCAwEAAaN7MHkw
|
26
|
+
CQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFO1rwHyxg39rlp0MN5Kj
|
27
|
+
s1uxvHyiMB8GA1UdEQQYMBaBFHJvZEBmb3ZlYWNlbnRyYWwuY29tMB8GA1UdEgQY
|
28
|
+
MBaBFHJvZEBmb3ZlYWNlbnRyYWwuY29tMA0GCSqGSIb3DQEBCwUAA4IBgQBg9aO1
|
29
|
+
1OhvQMbzefkcxE1QxuqwGzBh8kNiE2JL5FSGTtgFbXKqM1eeA0GWeZnksSVXOX40
|
30
|
+
01HDxW8CHdBnyNGorJPgbypZNI+gpi5bYKox0en7jj+88k9VA4fIbR+a/6sUSDsZ
|
31
|
+
82qpicz/Q+qkfnhQxHJ1Cj0lrZBq0Kuc+ooNxE4U3VT25CQCvUN9dlgyMZsH15ND
|
32
|
+
DpektzMLDzH4suOVGK09j7C3sTyVdwI5UkN8ix27Me0N4zPxjjYo0HFXIRNhEjVF
|
33
|
+
DWm9LGr9npmhQtd3A3ZyASawp+UUZ5pdc57YaBRDrJdFZr9056MpeByj+Fsg5Jkh
|
34
|
+
4o08iHs5bMPDyXBcj5XsYDLwAwTANPjGWGRNvrnY3KGGWdRMgtni3NJyMRCZ5tIT
|
35
|
+
UNicoJ8NJMgduyTPvZBJtvUPddQr1yAL66/l+CFewbGb/1DbqfSvA2atfUobhDrG
|
36
|
+
zYKOF/ofPEZhX7sqLK5GzDW4x1QDHAgr1YIdttVxhHADOxF4EVSJCHH0RGw=
|
36
37
|
-----END CERTIFICATE-----
|
37
|
-
date:
|
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.
|
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.
|
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: '
|
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.
|
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
|