geocoder 1.5.2 → 1.7.0
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
- data/CHANGELOG.md +48 -0
- data/LICENSE +1 -1
- data/README.md +323 -237
- data/bin/console +13 -0
- data/examples/autoexpire_cache_redis.rb +2 -0
- data/lib/easting_northing.rb +171 -0
- data/lib/geocoder/cache.rb +9 -1
- data/lib/geocoder/configuration.rb +3 -1
- data/lib/geocoder/configuration_hash.rb +4 -4
- data/lib/geocoder/ip_address.rb +8 -1
- data/lib/geocoder/lookup.rb +20 -3
- data/lib/geocoder/lookups/abstract_api.rb +46 -0
- data/lib/geocoder/lookups/amazon_location_service.rb +53 -0
- data/lib/geocoder/lookups/ban_data_gouv_fr.rb +14 -1
- data/lib/geocoder/lookups/bing.rb +1 -1
- data/lib/geocoder/lookups/esri.rb +6 -0
- data/lib/geocoder/lookups/geoapify.rb +72 -0
- data/lib/geocoder/lookups/geocodio.rb +1 -1
- data/lib/geocoder/lookups/geoip2.rb +4 -0
- data/lib/geocoder/lookups/google.rb +7 -2
- data/lib/geocoder/lookups/google_places_details.rb +8 -14
- data/lib/geocoder/lookups/google_places_search.rb +28 -2
- data/lib/geocoder/lookups/google_premier.rb +4 -0
- data/lib/geocoder/lookups/here.rb +7 -16
- data/lib/geocoder/lookups/ip2location.rb +10 -14
- data/lib/geocoder/lookups/ipgeolocation.rb +51 -0
- data/lib/geocoder/lookups/ipqualityscore.rb +50 -0
- data/lib/geocoder/lookups/latlon.rb +1 -2
- data/lib/geocoder/lookups/maxmind_local.rb +7 -1
- data/lib/geocoder/lookups/melissa_street.rb +41 -0
- data/lib/geocoder/lookups/nationaal_georegister_nl.rb +38 -0
- data/lib/geocoder/lookups/osmnames.rb +57 -0
- data/lib/geocoder/lookups/photon.rb +89 -0
- data/lib/geocoder/lookups/pickpoint.rb +1 -1
- data/lib/geocoder/lookups/smarty_streets.rb +6 -1
- data/lib/geocoder/lookups/telize.rb +1 -1
- data/lib/geocoder/lookups/tencent.rb +9 -9
- data/lib/geocoder/lookups/test.rb +4 -0
- data/lib/geocoder/lookups/uk_ordnance_survey_names.rb +59 -0
- data/lib/geocoder/lookups/yandex.rb +1 -2
- data/lib/geocoder/results/abstract_api.rb +146 -0
- data/lib/geocoder/results/amazon_location_service.rb +57 -0
- data/lib/geocoder/results/baidu.rb +0 -4
- data/lib/geocoder/results/ban_data_gouv_fr.rb +27 -2
- data/lib/geocoder/results/db_ip_com.rb +1 -1
- data/lib/geocoder/results/esri.rb +5 -2
- data/lib/geocoder/results/geoapify.rb +179 -0
- data/lib/geocoder/results/ipgeolocation.rb +59 -0
- data/lib/geocoder/results/ipqualityscore.rb +54 -0
- data/lib/geocoder/results/ipregistry.rb +4 -8
- data/lib/geocoder/results/mapbox.rb +10 -4
- data/lib/geocoder/results/melissa_street.rb +46 -0
- data/lib/geocoder/results/nationaal_georegister_nl.rb +62 -0
- data/lib/geocoder/results/nominatim.rb +4 -0
- data/lib/geocoder/results/osmnames.rb +56 -0
- data/lib/geocoder/results/photon.rb +119 -0
- data/lib/geocoder/results/uk_ordnance_survey_names.rb +59 -0
- data/lib/geocoder/results/yandex.rb +217 -59
- data/lib/geocoder/sql.rb +4 -4
- data/lib/geocoder/util.rb +29 -0
- data/lib/geocoder/version.rb +1 -1
- data/lib/maxmind_database.rb +3 -3
- metadata +29 -11
- data/lib/geocoder/lookups/geocoder_us.rb +0 -51
- data/lib/geocoder/results/geocoder_us.rb +0 -39
- data/lib/hash_recursive_merge.rb +0 -74
data/lib/geocoder/version.rb
CHANGED
data/lib/maxmind_database.rb
CHANGED
@@ -96,9 +96,9 @@ module Geocoder
|
|
96
96
|
|
97
97
|
def archive_url_path(package)
|
98
98
|
{
|
99
|
-
geolite_country_csv: "
|
100
|
-
geolite_city_csv: "
|
101
|
-
geolite_asn_csv: "
|
99
|
+
geolite_country_csv: "GeoLite2-Country-CSV.zip",
|
100
|
+
geolite_city_csv: "GeoLite2-City-CSV.zip",
|
101
|
+
geolite_asn_csv: "GeoLite2-ASN-CSV.zip"
|
102
102
|
}[package]
|
103
103
|
end
|
104
104
|
|
metadata
CHANGED
@@ -1,19 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: geocoder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Reisner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-10-11 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description:
|
14
|
-
|
15
|
-
|
16
|
-
frameworks too.
|
13
|
+
description: Object geocoding (by street or IP address), reverse geocoding (coordinates
|
14
|
+
to street address), distance queries for ActiveRecord and Mongoid, result caching,
|
15
|
+
and more. Designed for Rails but works with Sinatra and other Rack frameworks too.
|
17
16
|
email:
|
18
17
|
- alex@alexreisner.com
|
19
18
|
executables:
|
@@ -24,11 +23,13 @@ files:
|
|
24
23
|
- CHANGELOG.md
|
25
24
|
- LICENSE
|
26
25
|
- README.md
|
26
|
+
- bin/console
|
27
27
|
- bin/geocode
|
28
28
|
- examples/autoexpire_cache_dalli.rb
|
29
29
|
- examples/autoexpire_cache_redis.rb
|
30
30
|
- examples/cache_bypass.rb
|
31
31
|
- examples/reverse_geocode_job.rb
|
32
|
+
- lib/easting_northing.rb
|
32
33
|
- lib/generators/geocoder/config/config_generator.rb
|
33
34
|
- lib/generators/geocoder/config/templates/initializer.rb
|
34
35
|
- lib/generators/geocoder/maxmind/geolite_city_generator.rb
|
@@ -48,7 +49,9 @@ files:
|
|
48
49
|
- lib/geocoder/kernel_logger.rb
|
49
50
|
- lib/geocoder/logger.rb
|
50
51
|
- lib/geocoder/lookup.rb
|
52
|
+
- lib/geocoder/lookups/abstract_api.rb
|
51
53
|
- lib/geocoder/lookups/amap.rb
|
54
|
+
- lib/geocoder/lookups/amazon_location_service.rb
|
52
55
|
- lib/geocoder/lookups/baidu.rb
|
53
56
|
- lib/geocoder/lookups/baidu_ip.rb
|
54
57
|
- lib/geocoder/lookups/ban_data_gouv_fr.rb
|
@@ -58,8 +61,8 @@ files:
|
|
58
61
|
- lib/geocoder/lookups/dstk.rb
|
59
62
|
- lib/geocoder/lookups/esri.rb
|
60
63
|
- lib/geocoder/lookups/freegeoip.rb
|
64
|
+
- lib/geocoder/lookups/geoapify.rb
|
61
65
|
- lib/geocoder/lookups/geocoder_ca.rb
|
62
|
-
- lib/geocoder/lookups/geocoder_us.rb
|
63
66
|
- lib/geocoder/lookups/geocodio.rb
|
64
67
|
- lib/geocoder/lookups/geoip2.rb
|
65
68
|
- lib/geocoder/lookups/geoportail_lu.rb
|
@@ -71,7 +74,9 @@ files:
|
|
71
74
|
- lib/geocoder/lookups/ip2location.rb
|
72
75
|
- lib/geocoder/lookups/ipapi_com.rb
|
73
76
|
- lib/geocoder/lookups/ipdata_co.rb
|
77
|
+
- lib/geocoder/lookups/ipgeolocation.rb
|
74
78
|
- lib/geocoder/lookups/ipinfo_io.rb
|
79
|
+
- lib/geocoder/lookups/ipqualityscore.rb
|
75
80
|
- lib/geocoder/lookups/ipregistry.rb
|
76
81
|
- lib/geocoder/lookups/ipstack.rb
|
77
82
|
- lib/geocoder/lookups/latlon.rb
|
@@ -81,9 +86,13 @@ files:
|
|
81
86
|
- lib/geocoder/lookups/maxmind.rb
|
82
87
|
- lib/geocoder/lookups/maxmind_geoip2.rb
|
83
88
|
- lib/geocoder/lookups/maxmind_local.rb
|
89
|
+
- lib/geocoder/lookups/melissa_street.rb
|
90
|
+
- lib/geocoder/lookups/nationaal_georegister_nl.rb
|
84
91
|
- lib/geocoder/lookups/nominatim.rb
|
85
92
|
- lib/geocoder/lookups/opencagedata.rb
|
93
|
+
- lib/geocoder/lookups/osmnames.rb
|
86
94
|
- lib/geocoder/lookups/pelias.rb
|
95
|
+
- lib/geocoder/lookups/photon.rb
|
87
96
|
- lib/geocoder/lookups/pickpoint.rb
|
88
97
|
- lib/geocoder/lookups/pointpin.rb
|
89
98
|
- lib/geocoder/lookups/postcode_anywhere_uk.rb
|
@@ -92,6 +101,7 @@ files:
|
|
92
101
|
- lib/geocoder/lookups/telize.rb
|
93
102
|
- lib/geocoder/lookups/tencent.rb
|
94
103
|
- lib/geocoder/lookups/test.rb
|
104
|
+
- lib/geocoder/lookups/uk_ordnance_survey_names.rb
|
95
105
|
- lib/geocoder/lookups/yandex.rb
|
96
106
|
- lib/geocoder/models/active_record.rb
|
97
107
|
- lib/geocoder/models/base.rb
|
@@ -101,7 +111,9 @@ files:
|
|
101
111
|
- lib/geocoder/query.rb
|
102
112
|
- lib/geocoder/railtie.rb
|
103
113
|
- lib/geocoder/request.rb
|
114
|
+
- lib/geocoder/results/abstract_api.rb
|
104
115
|
- lib/geocoder/results/amap.rb
|
116
|
+
- lib/geocoder/results/amazon_location_service.rb
|
105
117
|
- lib/geocoder/results/baidu.rb
|
106
118
|
- lib/geocoder/results/baidu_ip.rb
|
107
119
|
- lib/geocoder/results/ban_data_gouv_fr.rb
|
@@ -111,8 +123,8 @@ files:
|
|
111
123
|
- lib/geocoder/results/dstk.rb
|
112
124
|
- lib/geocoder/results/esri.rb
|
113
125
|
- lib/geocoder/results/freegeoip.rb
|
126
|
+
- lib/geocoder/results/geoapify.rb
|
114
127
|
- lib/geocoder/results/geocoder_ca.rb
|
115
|
-
- lib/geocoder/results/geocoder_us.rb
|
116
128
|
- lib/geocoder/results/geocodio.rb
|
117
129
|
- lib/geocoder/results/geoip2.rb
|
118
130
|
- lib/geocoder/results/geoportail_lu.rb
|
@@ -124,7 +136,9 @@ files:
|
|
124
136
|
- lib/geocoder/results/ip2location.rb
|
125
137
|
- lib/geocoder/results/ipapi_com.rb
|
126
138
|
- lib/geocoder/results/ipdata_co.rb
|
139
|
+
- lib/geocoder/results/ipgeolocation.rb
|
127
140
|
- lib/geocoder/results/ipinfo_io.rb
|
141
|
+
- lib/geocoder/results/ipqualityscore.rb
|
128
142
|
- lib/geocoder/results/ipregistry.rb
|
129
143
|
- lib/geocoder/results/ipstack.rb
|
130
144
|
- lib/geocoder/results/latlon.rb
|
@@ -134,9 +148,13 @@ files:
|
|
134
148
|
- lib/geocoder/results/maxmind.rb
|
135
149
|
- lib/geocoder/results/maxmind_geoip2.rb
|
136
150
|
- lib/geocoder/results/maxmind_local.rb
|
151
|
+
- lib/geocoder/results/melissa_street.rb
|
152
|
+
- lib/geocoder/results/nationaal_georegister_nl.rb
|
137
153
|
- lib/geocoder/results/nominatim.rb
|
138
154
|
- lib/geocoder/results/opencagedata.rb
|
155
|
+
- lib/geocoder/results/osmnames.rb
|
139
156
|
- lib/geocoder/results/pelias.rb
|
157
|
+
- lib/geocoder/results/photon.rb
|
140
158
|
- lib/geocoder/results/pickpoint.rb
|
141
159
|
- lib/geocoder/results/pointpin.rb
|
142
160
|
- lib/geocoder/results/postcode_anywhere_uk.rb
|
@@ -145,6 +163,7 @@ files:
|
|
145
163
|
- lib/geocoder/results/telize.rb
|
146
164
|
- lib/geocoder/results/tencent.rb
|
147
165
|
- lib/geocoder/results/test.rb
|
166
|
+
- lib/geocoder/results/uk_ordnance_survey_names.rb
|
148
167
|
- lib/geocoder/results/yandex.rb
|
149
168
|
- lib/geocoder/sql.rb
|
150
169
|
- lib/geocoder/stores/active_record.rb
|
@@ -152,8 +171,8 @@ files:
|
|
152
171
|
- lib/geocoder/stores/mongo_base.rb
|
153
172
|
- lib/geocoder/stores/mongo_mapper.rb
|
154
173
|
- lib/geocoder/stores/mongoid.rb
|
174
|
+
- lib/geocoder/util.rb
|
155
175
|
- lib/geocoder/version.rb
|
156
|
-
- lib/hash_recursive_merge.rb
|
157
176
|
- lib/maxmind_database.rb
|
158
177
|
- lib/tasks/geocoder.rake
|
159
178
|
- lib/tasks/maxmind.rake
|
@@ -178,8 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
178
197
|
- !ruby/object:Gem::Version
|
179
198
|
version: '0'
|
180
199
|
requirements: []
|
181
|
-
|
182
|
-
rubygems_version: 2.7.6
|
200
|
+
rubygems_version: 3.1.2
|
183
201
|
signing_key:
|
184
202
|
specification_version: 4
|
185
203
|
summary: Complete geocoding solution for Ruby.
|
@@ -1,51 +0,0 @@
|
|
1
|
-
require 'geocoder/lookups/base'
|
2
|
-
require "geocoder/results/geocoder_us"
|
3
|
-
|
4
|
-
module Geocoder::Lookup
|
5
|
-
class GeocoderUs < Base
|
6
|
-
|
7
|
-
def name
|
8
|
-
"Geocoder.us"
|
9
|
-
end
|
10
|
-
|
11
|
-
def supported_protocols
|
12
|
-
[:http]
|
13
|
-
end
|
14
|
-
|
15
|
-
private # ----------------------------------------------------------------
|
16
|
-
|
17
|
-
def base_query_url(query)
|
18
|
-
base_query_url_with_optional_key(configuration.api_key)
|
19
|
-
end
|
20
|
-
|
21
|
-
def cache_key(query)
|
22
|
-
base_query_url_with_optional_key(nil) + url_query_string(query)
|
23
|
-
end
|
24
|
-
|
25
|
-
def base_query_url_with_optional_key(key = nil)
|
26
|
-
base = "#{protocol}://"
|
27
|
-
if configuration.api_key
|
28
|
-
base << "#{configuration.api_key}@"
|
29
|
-
end
|
30
|
-
base + "geocoder.us/member/service/csv/geocode?"
|
31
|
-
end
|
32
|
-
|
33
|
-
def results(query)
|
34
|
-
return [] unless doc = fetch_data(query)
|
35
|
-
if doc[0].to_s =~ /^(\d+)\:/
|
36
|
-
return []
|
37
|
-
else
|
38
|
-
return [doc.size == 5 ? ((doc[0..1] << nil) + doc[2..4]) : doc]
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def query_url_params(query)
|
43
|
-
(query.text =~ /^\d{5}(?:-\d{4})?$/ ? {:zip => query} : {:address => query.sanitized_text}).merge(super)
|
44
|
-
end
|
45
|
-
|
46
|
-
def parse_raw_data(raw_data)
|
47
|
-
raw_data.chomp.split(',')
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
@@ -1,39 +0,0 @@
|
|
1
|
-
require 'geocoder/results/base'
|
2
|
-
|
3
|
-
module Geocoder::Result
|
4
|
-
class GeocoderUs < Base
|
5
|
-
def coordinates
|
6
|
-
[@data[0].to_f, @data[1].to_f]
|
7
|
-
end
|
8
|
-
|
9
|
-
def address(format = :full)
|
10
|
-
"#{street_address}, #{city}, #{state} #{postal_code}, #{country}".sub(/^[ ,]*/, "")
|
11
|
-
end
|
12
|
-
|
13
|
-
def street_address
|
14
|
-
@data[2]
|
15
|
-
end
|
16
|
-
|
17
|
-
def city
|
18
|
-
@data[3]
|
19
|
-
end
|
20
|
-
|
21
|
-
def state
|
22
|
-
@data[4]
|
23
|
-
end
|
24
|
-
|
25
|
-
alias_method :state_code, :state
|
26
|
-
|
27
|
-
def postal_code
|
28
|
-
@data[5]
|
29
|
-
end
|
30
|
-
|
31
|
-
def country
|
32
|
-
'United States'
|
33
|
-
end
|
34
|
-
|
35
|
-
def country_code
|
36
|
-
'US'
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
data/lib/hash_recursive_merge.rb
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# = Hash Recursive Merge
|
3
|
-
#
|
4
|
-
# Merges a Ruby Hash recursively, Also known as deep merge.
|
5
|
-
# Recursive version of Hash#merge and Hash#merge!.
|
6
|
-
#
|
7
|
-
# Category:: Ruby
|
8
|
-
# Package:: Hash
|
9
|
-
# Author:: Simone Carletti <weppos@weppos.net>
|
10
|
-
# Copyright:: 2007-2008 The Authors
|
11
|
-
# License:: MIT License
|
12
|
-
# Link:: http://www.simonecarletti.com/
|
13
|
-
# Source:: http://gist.github.com/gists/6391/
|
14
|
-
#
|
15
|
-
module HashRecursiveMerge
|
16
|
-
|
17
|
-
#
|
18
|
-
# Recursive version of Hash#merge!
|
19
|
-
#
|
20
|
-
# Adds the contents of +other_hash+ to +hsh+,
|
21
|
-
# merging entries in +hsh+ with duplicate keys with those from +other_hash+.
|
22
|
-
#
|
23
|
-
# Compared with Hash#merge!, this method supports nested hashes.
|
24
|
-
# When both +hsh+ and +other_hash+ contains an entry with the same key,
|
25
|
-
# it merges and returns the values from both arrays.
|
26
|
-
#
|
27
|
-
# h1 = {"a" => 100, "b" => 200, "c" => {"c1" => 12, "c2" => 14}}
|
28
|
-
# h2 = {"b" => 254, "c" => {"c1" => 16, "c3" => 94}}
|
29
|
-
# h1.rmerge!(h2) #=> {"a" => 100, "b" => 254, "c" => {"c1" => 16, "c2" => 14, "c3" => 94}}
|
30
|
-
#
|
31
|
-
# Simply using Hash#merge! would return
|
32
|
-
#
|
33
|
-
# h1.merge!(h2) #=> {"a" => 100, "b" = >254, "c" => {"c1" => 16, "c3" => 94}}
|
34
|
-
#
|
35
|
-
def rmerge!(other_hash)
|
36
|
-
merge!(other_hash) do |key, oldval, newval|
|
37
|
-
oldval.class == self.class ? oldval.rmerge!(newval) : newval
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
#
|
42
|
-
# Recursive version of Hash#merge
|
43
|
-
#
|
44
|
-
# Compared with Hash#merge!, this method supports nested hashes.
|
45
|
-
# When both +hsh+ and +other_hash+ contains an entry with the same key,
|
46
|
-
# it merges and returns the values from both arrays.
|
47
|
-
#
|
48
|
-
# Compared with Hash#merge, this method provides a different approch
|
49
|
-
# for merging nasted hashes.
|
50
|
-
# If the value of a given key is an Hash and both +other_hash+ abd +hsh
|
51
|
-
# includes the same key, the value is merged instead replaced with
|
52
|
-
# +other_hash+ value.
|
53
|
-
#
|
54
|
-
# h1 = {"a" => 100, "b" => 200, "c" => {"c1" => 12, "c2" => 14}}
|
55
|
-
# h2 = {"b" => 254, "c" => {"c1" => 16, "c3" => 94}}
|
56
|
-
# h1.rmerge(h2) #=> {"a" => 100, "b" => 254, "c" => {"c1" => 16, "c2" => 14, "c3" => 94}}
|
57
|
-
#
|
58
|
-
# Simply using Hash#merge would return
|
59
|
-
#
|
60
|
-
# h1.merge(h2) #=> {"a" => 100, "b" = >254, "c" => {"c1" => 16, "c3" => 94}}
|
61
|
-
#
|
62
|
-
def rmerge(other_hash)
|
63
|
-
r = {}
|
64
|
-
merge(other_hash) do |key, oldval, newval|
|
65
|
-
r[key] = oldval.class == self.class ? oldval.rmerge(newval) : newval
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
end
|
70
|
-
|
71
|
-
|
72
|
-
class Hash
|
73
|
-
include HashRecursiveMerge
|
74
|
-
end
|