geocoder 1.5.1 → 1.6.3
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 +5 -5
- data/CHANGELOG.md +26 -0
- data/LICENSE +1 -1
- data/README.md +8 -10
- data/bin/console +13 -0
- data/examples/autoexpire_cache_redis.rb +2 -0
- data/lib/easting_northing.rb +171 -0
- data/lib/geocoder/ip_address.rb +2 -1
- data/lib/geocoder/lookup.rb +7 -3
- data/lib/geocoder/lookups/ban_data_gouv_fr.rb +13 -0
- data/lib/geocoder/lookups/base.rb +2 -0
- data/lib/geocoder/lookups/esri.rb +2 -0
- data/lib/geocoder/lookups/freegeoip.rb +4 -4
- data/lib/geocoder/lookups/here.rb +7 -16
- data/lib/geocoder/lookups/ip2location.rb +5 -13
- data/lib/geocoder/lookups/ipgeolocation.rb +51 -0
- data/lib/geocoder/lookups/ipregistry.rb +68 -0
- data/lib/geocoder/lookups/latlon.rb +1 -2
- data/lib/geocoder/lookups/nationaal_georegister_nl.rb +38 -0
- data/lib/geocoder/lookups/osmnames.rb +57 -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/uk_ordnance_survey_names.rb +59 -0
- data/lib/geocoder/lookups/yandex.rb +3 -4
- data/lib/geocoder/results/baidu.rb +0 -4
- data/lib/geocoder/results/ban_data_gouv_fr.rb +1 -1
- data/lib/geocoder/results/here.rb +4 -1
- data/lib/geocoder/results/ipgeolocation.rb +59 -0
- data/lib/geocoder/results/ipregistry.rb +308 -0
- data/lib/geocoder/results/nationaal_georegister_nl.rb +62 -0
- data/lib/geocoder/results/osmnames.rb +56 -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/version.rb +1 -1
- data/lib/hash_recursive_merge.rb +1 -2
- data/lib/maxmind_database.rb +3 -3
- metadata +19 -15
- data/lib/geocoder/lookups/geocoder_us.rb +0 -51
- data/lib/geocoder/results/geocoder_us.rb +0 -39
|
@@ -2,78 +2,223 @@ require 'geocoder/results/base'
|
|
|
2
2
|
|
|
3
3
|
module Geocoder::Result
|
|
4
4
|
class Yandex < Base
|
|
5
|
+
# Yandex result has difficult tree structure,
|
|
6
|
+
# and presence of some nodes depends on exact search case.
|
|
7
|
+
|
|
8
|
+
# Also Yandex lacks documentation about it.
|
|
9
|
+
# See https://tech.yandex.com/maps/doc/geocoder/desc/concepts/response_structure-docpage/
|
|
10
|
+
|
|
11
|
+
# Ultimatly, we need to find Locality and/or Thoroughfare data.
|
|
12
|
+
|
|
13
|
+
# It may resides on the top (ADDRESS_DETAILS) level.
|
|
14
|
+
# example: 'Baltic Sea'
|
|
15
|
+
# "AddressDetails": {
|
|
16
|
+
# "Locality": {
|
|
17
|
+
# "Premise": {
|
|
18
|
+
# "PremiseName": "Baltic Sea"
|
|
19
|
+
# }
|
|
20
|
+
# }
|
|
21
|
+
# }
|
|
22
|
+
|
|
23
|
+
ADDRESS_DETAILS = %w[
|
|
24
|
+
GeoObject metaDataProperty GeocoderMetaData
|
|
25
|
+
AddressDetails
|
|
26
|
+
].freeze
|
|
27
|
+
|
|
28
|
+
# On COUNTRY_LEVEL.
|
|
29
|
+
# example: 'Potomak'
|
|
30
|
+
# "AddressDetails": {
|
|
31
|
+
# "Country": {
|
|
32
|
+
# "AddressLine": "reka Potomak",
|
|
33
|
+
# "CountryNameCode": "US",
|
|
34
|
+
# "CountryName": "United States of America",
|
|
35
|
+
# "Locality": {
|
|
36
|
+
# "Premise": {
|
|
37
|
+
# "PremiseName": "reka Potomak"
|
|
38
|
+
# }
|
|
39
|
+
# }
|
|
40
|
+
# }
|
|
41
|
+
# }
|
|
42
|
+
|
|
43
|
+
COUNTRY_LEVEL = %w[
|
|
44
|
+
GeoObject metaDataProperty GeocoderMetaData
|
|
45
|
+
AddressDetails Country
|
|
46
|
+
].freeze
|
|
47
|
+
|
|
48
|
+
# On ADMIN_LEVEL (usually state or city)
|
|
49
|
+
# example: 'Moscow, Tverskaya'
|
|
50
|
+
# "AddressDetails": {
|
|
51
|
+
# "Country": {
|
|
52
|
+
# "AddressLine": "Moscow, Tverskaya Street",
|
|
53
|
+
# "CountryNameCode": "RU",
|
|
54
|
+
# "CountryName": "Russia",
|
|
55
|
+
# "AdministrativeArea": {
|
|
56
|
+
# "AdministrativeAreaName": "Moscow",
|
|
57
|
+
# "Locality": {
|
|
58
|
+
# "LocalityName": "Moscow",
|
|
59
|
+
# "Thoroughfare": {
|
|
60
|
+
# "ThoroughfareName": "Tverskaya Street"
|
|
61
|
+
# }
|
|
62
|
+
# }
|
|
63
|
+
# }
|
|
64
|
+
# }
|
|
65
|
+
# }
|
|
66
|
+
|
|
67
|
+
ADMIN_LEVEL = %w[
|
|
68
|
+
GeoObject metaDataProperty GeocoderMetaData
|
|
69
|
+
AddressDetails Country
|
|
70
|
+
AdministrativeArea
|
|
71
|
+
].freeze
|
|
72
|
+
|
|
73
|
+
# On SUBADMIN_LEVEL (may refer to urban district)
|
|
74
|
+
# example: 'Moscow Region, Krasnogorsk'
|
|
75
|
+
# "AddressDetails": {
|
|
76
|
+
# "Country": {
|
|
77
|
+
# "AddressLine": "Moscow Region, Krasnogorsk",
|
|
78
|
+
# "CountryNameCode": "RU",
|
|
79
|
+
# "CountryName": "Russia",
|
|
80
|
+
# "AdministrativeArea": {
|
|
81
|
+
# "AdministrativeAreaName": "Moscow Region",
|
|
82
|
+
# "SubAdministrativeArea": {
|
|
83
|
+
# "SubAdministrativeAreaName": "gorodskoy okrug Krasnogorsk",
|
|
84
|
+
# "Locality": {
|
|
85
|
+
# "LocalityName": "Krasnogorsk"
|
|
86
|
+
# }
|
|
87
|
+
# }
|
|
88
|
+
# }
|
|
89
|
+
# }
|
|
90
|
+
# }
|
|
91
|
+
|
|
92
|
+
SUBADMIN_LEVEL = %w[
|
|
93
|
+
GeoObject metaDataProperty GeocoderMetaData
|
|
94
|
+
AddressDetails Country
|
|
95
|
+
AdministrativeArea
|
|
96
|
+
SubAdministrativeArea
|
|
97
|
+
].freeze
|
|
98
|
+
|
|
99
|
+
# On DEPENDENT_LOCALITY_1 (may refer to district of city)
|
|
100
|
+
# example: 'Paris, Etienne Marcel'
|
|
101
|
+
# "AddressDetails": {
|
|
102
|
+
# "Country": {
|
|
103
|
+
# "AddressLine": "Île-de-France, Paris, 1er Arrondissement, Rue Étienne Marcel",
|
|
104
|
+
# "CountryNameCode": "FR",
|
|
105
|
+
# "CountryName": "France",
|
|
106
|
+
# "AdministrativeArea": {
|
|
107
|
+
# "AdministrativeAreaName": "Île-de-France",
|
|
108
|
+
# "Locality": {
|
|
109
|
+
# "LocalityName": "Paris",
|
|
110
|
+
# "DependentLocality": {
|
|
111
|
+
# "DependentLocalityName": "1er Arrondissement",
|
|
112
|
+
# "Thoroughfare": {
|
|
113
|
+
# "ThoroughfareName": "Rue Étienne Marcel"
|
|
114
|
+
# }
|
|
115
|
+
# }
|
|
116
|
+
# }
|
|
117
|
+
# }
|
|
118
|
+
# }
|
|
119
|
+
# }
|
|
120
|
+
|
|
121
|
+
DEPENDENT_LOCALITY_1 = %w[
|
|
122
|
+
GeoObject metaDataProperty GeocoderMetaData
|
|
123
|
+
AddressDetails Country
|
|
124
|
+
AdministrativeArea Locality
|
|
125
|
+
DependentLocality
|
|
126
|
+
].freeze
|
|
127
|
+
|
|
128
|
+
# On DEPENDENT_LOCALITY_2 (for special cases like turkish "mahalle")
|
|
129
|
+
# https://en.wikipedia.org/wiki/Mahalle
|
|
130
|
+
# example: 'Istanbul Mabeyinci Yokuşu 17'
|
|
131
|
+
|
|
132
|
+
# "AddressDetails": {
|
|
133
|
+
# "Country": {
|
|
134
|
+
# "AddressLine": "İstanbul, Fatih, Saraç İshak Mah., Mabeyinci Yokuşu, 17",
|
|
135
|
+
# "CountryNameCode": "TR",
|
|
136
|
+
# "CountryName": "Turkey",
|
|
137
|
+
# "AdministrativeArea": {
|
|
138
|
+
# "AdministrativeAreaName": "İstanbul",
|
|
139
|
+
# "SubAdministrativeArea": {
|
|
140
|
+
# "SubAdministrativeAreaName": "Fatih",
|
|
141
|
+
# "Locality": {
|
|
142
|
+
# "DependentLocality": {
|
|
143
|
+
# "DependentLocalityName": "Saraç İshak Mah.",
|
|
144
|
+
# "Thoroughfare": {
|
|
145
|
+
# "ThoroughfareName": "Mabeyinci Yokuşu",
|
|
146
|
+
# "Premise": {
|
|
147
|
+
# "PremiseNumber": "17"
|
|
148
|
+
# }
|
|
149
|
+
# }
|
|
150
|
+
# }
|
|
151
|
+
# }
|
|
152
|
+
# }
|
|
153
|
+
# }
|
|
154
|
+
# }
|
|
155
|
+
# }
|
|
156
|
+
|
|
157
|
+
DEPENDENT_LOCALITY_2 = %w[
|
|
158
|
+
GeoObject metaDataProperty GeocoderMetaData
|
|
159
|
+
AddressDetails Country
|
|
160
|
+
AdministrativeArea
|
|
161
|
+
SubAdministrativeArea Locality
|
|
162
|
+
DependentLocality
|
|
163
|
+
].freeze
|
|
5
164
|
|
|
6
165
|
def coordinates
|
|
7
166
|
@data['GeoObject']['Point']['pos'].split(' ').reverse.map(&:to_f)
|
|
8
167
|
end
|
|
9
168
|
|
|
10
|
-
def address(
|
|
169
|
+
def address(_format = :full)
|
|
11
170
|
@data['GeoObject']['metaDataProperty']['GeocoderMetaData']['text']
|
|
12
171
|
end
|
|
13
172
|
|
|
14
173
|
def city
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
174
|
+
result =
|
|
175
|
+
if state.empty?
|
|
176
|
+
find_in_hash(@data, *COUNTRY_LEVEL, 'Locality', 'LocalityName')
|
|
177
|
+
elsif sub_state.empty?
|
|
178
|
+
find_in_hash(@data, *ADMIN_LEVEL, 'Locality', 'LocalityName')
|
|
179
|
+
else
|
|
180
|
+
find_in_hash(@data, *SUBADMIN_LEVEL, 'Locality', 'LocalityName')
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
result || ""
|
|
25
184
|
end
|
|
26
185
|
|
|
27
186
|
def country
|
|
28
|
-
|
|
29
|
-
address_details['CountryName']
|
|
30
|
-
else
|
|
31
|
-
""
|
|
32
|
-
end
|
|
187
|
+
find_in_hash(@data, *COUNTRY_LEVEL, 'CountryName') || ""
|
|
33
188
|
end
|
|
34
189
|
|
|
35
190
|
def country_code
|
|
36
|
-
|
|
37
|
-
address_details['CountryNameCode']
|
|
38
|
-
else
|
|
39
|
-
""
|
|
40
|
-
end
|
|
191
|
+
find_in_hash(@data, *COUNTRY_LEVEL, 'CountryNameCode') || ""
|
|
41
192
|
end
|
|
42
193
|
|
|
43
194
|
def state
|
|
44
|
-
|
|
45
|
-
address_details['AdministrativeArea']['AdministrativeAreaName']
|
|
46
|
-
else
|
|
47
|
-
""
|
|
48
|
-
end
|
|
195
|
+
find_in_hash(@data, *ADMIN_LEVEL, 'AdministrativeAreaName') || ""
|
|
49
196
|
end
|
|
50
197
|
|
|
51
198
|
def sub_state
|
|
52
|
-
if
|
|
53
|
-
|
|
54
|
-
else
|
|
55
|
-
""
|
|
56
|
-
end
|
|
199
|
+
return "" if state.empty?
|
|
200
|
+
find_in_hash(@data, *SUBADMIN_LEVEL, 'SubAdministrativeAreaName') || ""
|
|
57
201
|
end
|
|
58
202
|
|
|
59
203
|
def state_code
|
|
60
204
|
""
|
|
61
205
|
end
|
|
62
206
|
|
|
63
|
-
def
|
|
64
|
-
""
|
|
207
|
+
def street
|
|
208
|
+
thoroughfare_data.is_a?(Hash) ? thoroughfare_data['ThoroughfareName'] : ""
|
|
65
209
|
end
|
|
66
210
|
|
|
67
|
-
def
|
|
68
|
-
|
|
211
|
+
def street_number
|
|
212
|
+
premise.is_a?(Hash) ? premise.fetch('PremiseNumber', "") : ""
|
|
69
213
|
end
|
|
70
214
|
|
|
71
|
-
def
|
|
72
|
-
|
|
215
|
+
def premise_name
|
|
216
|
+
premise.is_a?(Hash) ? premise.fetch('PremiseName', "") : ""
|
|
73
217
|
end
|
|
74
218
|
|
|
75
|
-
def
|
|
76
|
-
|
|
219
|
+
def postal_code
|
|
220
|
+
return "" unless premise.is_a?(Hash)
|
|
221
|
+
find_in_hash(premise, 'PostalCode', 'PostalCodeNumber') || ""
|
|
77
222
|
end
|
|
78
223
|
|
|
79
224
|
def kind
|
|
@@ -93,42 +238,55 @@ module Geocoder::Result
|
|
|
93
238
|
|
|
94
239
|
private # ----------------------------------------------------------------
|
|
95
240
|
|
|
96
|
-
def
|
|
97
|
-
|
|
241
|
+
def top_level_locality
|
|
242
|
+
find_in_hash(@data, *ADDRESS_DETAILS, 'Locality')
|
|
98
243
|
end
|
|
99
244
|
|
|
100
|
-
def
|
|
101
|
-
|
|
245
|
+
def country_level_locality
|
|
246
|
+
find_in_hash(@data, *COUNTRY_LEVEL, 'Locality')
|
|
102
247
|
end
|
|
103
248
|
|
|
104
249
|
def admin_locality
|
|
105
|
-
|
|
106
|
-
address_details['AdministrativeArea']['Locality']
|
|
250
|
+
find_in_hash(@data, *ADMIN_LEVEL, 'Locality')
|
|
107
251
|
end
|
|
108
252
|
|
|
109
253
|
def subadmin_locality
|
|
110
|
-
|
|
111
|
-
address_details['AdministrativeArea']['SubAdministrativeArea'] &&
|
|
112
|
-
address_details['AdministrativeArea']['SubAdministrativeArea']['Locality']
|
|
254
|
+
find_in_hash(@data, *SUBADMIN_LEVEL, 'Locality')
|
|
113
255
|
end
|
|
114
256
|
|
|
115
257
|
def dependent_locality
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
258
|
+
find_in_hash(@data, *DEPENDENT_LOCALITY_1) ||
|
|
259
|
+
find_in_hash(@data, *DEPENDENT_LOCALITY_2)
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
def locality_data
|
|
263
|
+
dependent_locality || subadmin_locality || admin_locality ||
|
|
264
|
+
country_level_locality || top_level_locality
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
def thoroughfare_data
|
|
268
|
+
locality_data['Thoroughfare'] if locality_data.is_a?(Hash)
|
|
120
269
|
end
|
|
121
270
|
|
|
122
|
-
def
|
|
123
|
-
|
|
271
|
+
def premise
|
|
272
|
+
if thoroughfare_data.is_a?(Hash)
|
|
273
|
+
thoroughfare_data['Premise']
|
|
274
|
+
elsif locality_data.is_a?(Hash)
|
|
275
|
+
locality_data['Premise']
|
|
276
|
+
end
|
|
124
277
|
end
|
|
125
278
|
|
|
126
|
-
def
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
279
|
+
def find_in_hash(source, *keys)
|
|
280
|
+
key = keys.shift
|
|
281
|
+
result = source[key]
|
|
282
|
+
|
|
283
|
+
if keys.empty?
|
|
284
|
+
return result
|
|
285
|
+
elsif !result.is_a?(Hash)
|
|
286
|
+
return nil
|
|
131
287
|
end
|
|
288
|
+
|
|
289
|
+
find_in_hash(result, *keys)
|
|
132
290
|
end
|
|
133
291
|
end
|
|
134
292
|
end
|
data/lib/geocoder/sql.rb
CHANGED
|
@@ -44,13 +44,13 @@ module Geocoder
|
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
def within_bounding_box(sw_lat, sw_lng, ne_lat, ne_lng, lat_attr, lon_attr)
|
|
47
|
-
spans = "#{lat_attr} BETWEEN #{sw_lat} AND #{ne_lat} AND "
|
|
47
|
+
spans = "#{lat_attr} BETWEEN #{sw_lat.to_f} AND #{ne_lat.to_f} AND "
|
|
48
48
|
# handle box that spans 180 longitude
|
|
49
49
|
if sw_lng.to_f > ne_lng.to_f
|
|
50
|
-
spans + "(#{lon_attr} BETWEEN #{sw_lng} AND 180 OR " +
|
|
51
|
-
"#{lon_attr} BETWEEN -180 AND #{ne_lng})"
|
|
50
|
+
spans + "(#{lon_attr} BETWEEN #{sw_lng.to_f} AND 180 OR " +
|
|
51
|
+
"#{lon_attr} BETWEEN -180 AND #{ne_lng.to_f})"
|
|
52
52
|
else
|
|
53
|
-
spans + "#{lon_attr} BETWEEN #{sw_lng} AND #{ne_lng}"
|
|
53
|
+
spans + "#{lon_attr} BETWEEN #{sw_lng.to_f} AND #{ne_lng.to_f}"
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
56
|
|
data/lib/geocoder/version.rb
CHANGED
data/lib/hash_recursive_merge.rb
CHANGED
|
@@ -60,9 +60,8 @@ module HashRecursiveMerge
|
|
|
60
60
|
# h1.merge(h2) #=> {"a" => 100, "b" = >254, "c" => {"c1" => 16, "c3" => 94}}
|
|
61
61
|
#
|
|
62
62
|
def rmerge(other_hash)
|
|
63
|
-
r = {}
|
|
64
63
|
merge(other_hash) do |key, oldval, newval|
|
|
65
|
-
|
|
64
|
+
oldval.class == self.class ? oldval.rmerge(newval) : newval
|
|
66
65
|
end
|
|
67
66
|
end
|
|
68
67
|
|
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.6.3
|
|
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: 2020-04-30 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
|
|
@@ -59,7 +60,6 @@ files:
|
|
|
59
60
|
- lib/geocoder/lookups/esri.rb
|
|
60
61
|
- lib/geocoder/lookups/freegeoip.rb
|
|
61
62
|
- lib/geocoder/lookups/geocoder_ca.rb
|
|
62
|
-
- lib/geocoder/lookups/geocoder_us.rb
|
|
63
63
|
- lib/geocoder/lookups/geocodio.rb
|
|
64
64
|
- lib/geocoder/lookups/geoip2.rb
|
|
65
65
|
- lib/geocoder/lookups/geoportail_lu.rb
|
|
@@ -71,7 +71,9 @@ files:
|
|
|
71
71
|
- lib/geocoder/lookups/ip2location.rb
|
|
72
72
|
- lib/geocoder/lookups/ipapi_com.rb
|
|
73
73
|
- lib/geocoder/lookups/ipdata_co.rb
|
|
74
|
+
- lib/geocoder/lookups/ipgeolocation.rb
|
|
74
75
|
- lib/geocoder/lookups/ipinfo_io.rb
|
|
76
|
+
- lib/geocoder/lookups/ipregistry.rb
|
|
75
77
|
- lib/geocoder/lookups/ipstack.rb
|
|
76
78
|
- lib/geocoder/lookups/latlon.rb
|
|
77
79
|
- lib/geocoder/lookups/location_iq.rb
|
|
@@ -80,8 +82,10 @@ files:
|
|
|
80
82
|
- lib/geocoder/lookups/maxmind.rb
|
|
81
83
|
- lib/geocoder/lookups/maxmind_geoip2.rb
|
|
82
84
|
- lib/geocoder/lookups/maxmind_local.rb
|
|
85
|
+
- lib/geocoder/lookups/nationaal_georegister_nl.rb
|
|
83
86
|
- lib/geocoder/lookups/nominatim.rb
|
|
84
87
|
- lib/geocoder/lookups/opencagedata.rb
|
|
88
|
+
- lib/geocoder/lookups/osmnames.rb
|
|
85
89
|
- lib/geocoder/lookups/pelias.rb
|
|
86
90
|
- lib/geocoder/lookups/pickpoint.rb
|
|
87
91
|
- lib/geocoder/lookups/pointpin.rb
|
|
@@ -91,6 +95,7 @@ files:
|
|
|
91
95
|
- lib/geocoder/lookups/telize.rb
|
|
92
96
|
- lib/geocoder/lookups/tencent.rb
|
|
93
97
|
- lib/geocoder/lookups/test.rb
|
|
98
|
+
- lib/geocoder/lookups/uk_ordnance_survey_names.rb
|
|
94
99
|
- lib/geocoder/lookups/yandex.rb
|
|
95
100
|
- lib/geocoder/models/active_record.rb
|
|
96
101
|
- lib/geocoder/models/base.rb
|
|
@@ -111,7 +116,6 @@ files:
|
|
|
111
116
|
- lib/geocoder/results/esri.rb
|
|
112
117
|
- lib/geocoder/results/freegeoip.rb
|
|
113
118
|
- lib/geocoder/results/geocoder_ca.rb
|
|
114
|
-
- lib/geocoder/results/geocoder_us.rb
|
|
115
119
|
- lib/geocoder/results/geocodio.rb
|
|
116
120
|
- lib/geocoder/results/geoip2.rb
|
|
117
121
|
- lib/geocoder/results/geoportail_lu.rb
|
|
@@ -123,7 +127,9 @@ files:
|
|
|
123
127
|
- lib/geocoder/results/ip2location.rb
|
|
124
128
|
- lib/geocoder/results/ipapi_com.rb
|
|
125
129
|
- lib/geocoder/results/ipdata_co.rb
|
|
130
|
+
- lib/geocoder/results/ipgeolocation.rb
|
|
126
131
|
- lib/geocoder/results/ipinfo_io.rb
|
|
132
|
+
- lib/geocoder/results/ipregistry.rb
|
|
127
133
|
- lib/geocoder/results/ipstack.rb
|
|
128
134
|
- lib/geocoder/results/latlon.rb
|
|
129
135
|
- lib/geocoder/results/location_iq.rb
|
|
@@ -132,8 +138,10 @@ files:
|
|
|
132
138
|
- lib/geocoder/results/maxmind.rb
|
|
133
139
|
- lib/geocoder/results/maxmind_geoip2.rb
|
|
134
140
|
- lib/geocoder/results/maxmind_local.rb
|
|
141
|
+
- lib/geocoder/results/nationaal_georegister_nl.rb
|
|
135
142
|
- lib/geocoder/results/nominatim.rb
|
|
136
143
|
- lib/geocoder/results/opencagedata.rb
|
|
144
|
+
- lib/geocoder/results/osmnames.rb
|
|
137
145
|
- lib/geocoder/results/pelias.rb
|
|
138
146
|
- lib/geocoder/results/pickpoint.rb
|
|
139
147
|
- lib/geocoder/results/pointpin.rb
|
|
@@ -143,6 +151,7 @@ files:
|
|
|
143
151
|
- lib/geocoder/results/telize.rb
|
|
144
152
|
- lib/geocoder/results/tencent.rb
|
|
145
153
|
- lib/geocoder/results/test.rb
|
|
154
|
+
- lib/geocoder/results/uk_ordnance_survey_names.rb
|
|
146
155
|
- lib/geocoder/results/yandex.rb
|
|
147
156
|
- lib/geocoder/sql.rb
|
|
148
157
|
- lib/geocoder/stores/active_record.rb
|
|
@@ -161,11 +170,7 @@ licenses:
|
|
|
161
170
|
metadata:
|
|
162
171
|
source_code_uri: https://github.com/alexreisner/geocoder
|
|
163
172
|
changelog_uri: https://github.com/alexreisner/geocoder/blob/master/CHANGELOG.md
|
|
164
|
-
post_install_message:
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
NOTE: Geocoder's default IP address lookup has changed from FreeGeoIP.net to IPInfo.io. If you explicitly specify :freegeoip in your configuration you must choose a different IP lookup before FreeGeoIP is discontinued on July 1, 2018. If you do not explicitly specify :freegeoip you do not need to change anything.
|
|
168
|
-
|
|
173
|
+
post_install_message:
|
|
169
174
|
rdoc_options: []
|
|
170
175
|
require_paths:
|
|
171
176
|
- lib
|
|
@@ -180,8 +185,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
180
185
|
- !ruby/object:Gem::Version
|
|
181
186
|
version: '0'
|
|
182
187
|
requirements: []
|
|
183
|
-
|
|
184
|
-
rubygems_version: 2.5.2
|
|
188
|
+
rubygems_version: 3.1.2
|
|
185
189
|
signing_key:
|
|
186
190
|
specification_version: 4
|
|
187
191
|
summary: Complete geocoding solution for Ruby.
|