ip2location_ruby 8.6.0 → 8.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/LICENSE.txt +1 -1
- data/VERSION +1 -1
- data/example.rb +4 -1
- data/ip2location_ruby.gemspec +1 -1
- data/lib/ip2location_ruby/database_config.rb +24 -21
- data/lib/ip2location_ruby.rb +90 -24
- data/rb/data/IP2LOCATION-LITE-DB1.IPV6.BIN +0 -0
- data/spec/ip2location_ruby_database_spec.rb +18 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 07d9738099db961a6661f7266017f4f5cf8156cb0b0e2063bf1e2a246dfe39f4
|
4
|
+
data.tar.gz: 9f4e8c1f7c60a58687e8d922816e69e6ddbaa4f4bd06dd9b0938a194278f8188
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5417dcb43c59394ad2500f0e79ec109fc75bb70b0afca917c3150cd0ac6da7168e94b4381e01624fa8ee43ef05a9ed5bd148a4539c6d90ab23ed927cd2ff4cd2
|
7
|
+
data.tar.gz: 7a60ef9c3759e47b1c2699378103fbfbf3fde9e8007ecfee424739a9226cd0b9e24852e1e11b4f758f2fb67e9eeefc06845688da98d42043b02aaa4d9c8187c3
|
data/LICENSE.txt
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
8.
|
1
|
+
8.7.0
|
data/example.rb
CHANGED
@@ -29,6 +29,9 @@ puts record['elevation']
|
|
29
29
|
puts 'Usage Type: ' + record['usagetype']
|
30
30
|
puts 'Address Type: ' + record['addresstype']
|
31
31
|
puts 'Category: ' + record['category']
|
32
|
+
puts 'District: ' + record['district']
|
33
|
+
puts 'ASN: ' + record['asn']
|
34
|
+
puts 'AS: ' + record['as']
|
32
35
|
i2l.close()
|
33
36
|
|
34
37
|
# Web Service
|
@@ -58,4 +61,4 @@ puts country.get_country_info('US')
|
|
58
61
|
|
59
62
|
# Region Class
|
60
63
|
region = Ip2locationRegion.new('./data/IP2LOCATION-ISO3166-2.CSV')
|
61
|
-
puts region.get_region_code('US', 'California')
|
64
|
+
puts region.get_region_code('US', 'California')
|
data/ip2location_ruby.gemspec
CHANGED
@@ -1,26 +1,29 @@
|
|
1
1
|
class DbConfig
|
2
2
|
COLUMNS = {
|
3
|
-
:COUNTRY => [0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
|
4
|
-
:REGION => [0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
|
5
|
-
:CITY => [0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4],
|
6
|
-
:LATITUDE => [0, 0, 0, 0, 0, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
|
7
|
-
:LONGITUDE => [0, 0, 0, 0, 0, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6],
|
8
|
-
:ZIPCODE => [0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 0, 7, 7, 7, 0, 7, 0, 7, 7, 7, 0, 7, 7],
|
9
|
-
:TIMEZONE => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 7, 8, 8, 8, 7, 8, 0, 8, 8, 8, 0, 8, 8],
|
10
|
-
:ISP => [0, 0, 3, 0, 5, 0, 7, 5, 7, 0, 8, 0, 9, 0, 9, 0, 9, 0, 9, 7, 9, 0, 9, 7, 9, 9],
|
11
|
-
:DOMAIN => [0, 0, 0, 0, 0, 0, 0, 6, 8, 0, 9, 0, 10, 0, 10, 0, 10, 0, 10, 8, 10, 0, 10, 8, 10, 10],
|
12
|
-
:NETSPEED => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 11, 0, 11,8, 11, 0, 11, 0, 11, 0, 11, 11],
|
13
|
-
:IDDCODE => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 12, 0, 12, 0, 12, 9, 12, 0, 12, 12],
|
14
|
-
:AREACODE => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10 ,13 ,0, 13, 0, 13, 10, 13, 0, 13, 13],
|
15
|
-
:WEATHERSTATIONCODE => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 14, 0, 14, 0, 14, 0, 14, 14],
|
16
|
-
:WEATHERSTATIONNAME => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 15, 0, 15, 0, 15, 0, 15, 15],
|
17
|
-
:MCC => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 16, 0, 16, 9, 16, 16],
|
18
|
-
:MNC => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,17, 0, 17, 10, 17, 17],
|
19
|
-
:MOBILEBRAND => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,18, 0, 18, 11, 18, 18],
|
20
|
-
:ELEVATION => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 19, 0, 19, 19],
|
21
|
-
:USAGETYPE => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 20, 20],
|
22
|
-
:ADDRESSTYPE => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21],
|
23
|
-
:CATEGORY => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22]
|
3
|
+
:COUNTRY => [0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
|
4
|
+
:REGION => [0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
|
5
|
+
:CITY => [0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4],
|
6
|
+
:LATITUDE => [0, 0, 0, 0, 0, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
|
7
|
+
:LONGITUDE => [0, 0, 0, 0, 0, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6],
|
8
|
+
:ZIPCODE => [0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 0, 7, 7, 7, 0, 7, 0, 7, 7, 7, 0, 7, 7, 7],
|
9
|
+
:TIMEZONE => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 7, 8, 8, 8, 7, 8, 0, 8, 8, 8, 0, 8, 8, 8],
|
10
|
+
:ISP => [0, 0, 3, 0, 5, 0, 7, 5, 7, 0, 8, 0, 9, 0, 9, 0, 9, 0, 9, 7, 9, 0, 9, 7, 9, 9, 9],
|
11
|
+
:DOMAIN => [0, 0, 0, 0, 0, 0, 0, 6, 8, 0, 9, 0, 10, 0, 10, 0, 10, 0, 10, 8, 10, 0, 10, 8, 10, 10, 10],
|
12
|
+
:NETSPEED => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 11, 0, 11,8, 11, 0, 11, 0, 11, 0, 11, 11, 11],
|
13
|
+
:IDDCODE => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 12, 0, 12, 0, 12, 9, 12, 0, 12, 12, 12],
|
14
|
+
:AREACODE => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10 ,13 ,0, 13, 0, 13, 10, 13, 0, 13, 13, 13],
|
15
|
+
:WEATHERSTATIONCODE => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 14, 0, 14, 0, 14, 0, 14, 14, 14],
|
16
|
+
:WEATHERSTATIONNAME => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 15, 0, 15, 0, 15, 0, 15, 15, 15],
|
17
|
+
:MCC => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 16, 0, 16, 9, 16, 16, 16],
|
18
|
+
:MNC => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,17, 0, 17, 10, 17, 17, 17],
|
19
|
+
:MOBILEBRAND => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,18, 0, 18, 11, 18, 18, 18],
|
20
|
+
:ELEVATION => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 19, 0, 19, 19, 19],
|
21
|
+
:USAGETYPE => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 20, 20, 20],
|
22
|
+
:ADDRESSTYPE => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21],
|
23
|
+
:CATEGORY => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 22],
|
24
|
+
:DISTRICT => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23],
|
25
|
+
:ASN => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24],
|
26
|
+
:AS => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25]
|
24
27
|
}
|
25
28
|
|
26
29
|
def self.setup_database(db_index)
|
data/lib/ip2location_ruby.rb
CHANGED
@@ -14,7 +14,7 @@ require 'ip2location_ruby/ip2location_record'
|
|
14
14
|
class Ip2location
|
15
15
|
attr_accessor :record_class4, :record_class6, :v4, :file, :db_index, :count, :base_addr, :ipno, :count, :record, :database, :columns, :ip_version, :ipv4databasecount, :ipv4databaseaddr, :ipv4indexbaseaddr, :ipv6databasecount, :ipv6databaseaddr, :ipv6indexbaseaddr, :databaseyear, :databasemonth, :databaseday, :last_err_msg
|
16
16
|
|
17
|
-
VERSION = '8.
|
17
|
+
VERSION = '8.7.0'
|
18
18
|
FIELD_NOT_SUPPORTED = 'NOT SUPPORTED'
|
19
19
|
INVALID_IP_ADDRESS = 'INVALID IP ADDRESS'
|
20
20
|
INVALID_BIN_DATABASE = 'Incorrect IP2Location BIN file format. Please make sure that you are using the latest IP2Location BIN file.'
|
@@ -119,7 +119,7 @@ class Ip2location
|
|
119
119
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
120
120
|
if valid
|
121
121
|
rec = get_record(ip)
|
122
|
-
if
|
122
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
123
123
|
country_short = IPV6_ADDRESS_IN_IPV4_BIN
|
124
124
|
country_long = IPV6_ADDRESS_IN_IPV4_BIN
|
125
125
|
region = IPV6_ADDRESS_IN_IPV4_BIN
|
@@ -142,6 +142,9 @@ class Ip2location
|
|
142
142
|
usagetype = IPV6_ADDRESS_IN_IPV4_BIN
|
143
143
|
addresstype = IPV6_ADDRESS_IN_IPV4_BIN
|
144
144
|
category = IPV6_ADDRESS_IN_IPV4_BIN
|
145
|
+
district = IPV6_ADDRESS_IN_IPV4_BIN
|
146
|
+
asn = IPV6_ADDRESS_IN_IPV4_BIN
|
147
|
+
as = IPV6_ADDRESS_IN_IPV4_BIN
|
145
148
|
elsif !(rec.nil?)
|
146
149
|
country_short = (defined?(rec.country_short) && rec.country_short != '') ? rec.country_short : FIELD_NOT_SUPPORTED
|
147
150
|
country_long = (defined?(rec.country_long) && rec.country_long != '') ? rec.country_long : FIELD_NOT_SUPPORTED
|
@@ -165,6 +168,9 @@ class Ip2location
|
|
165
168
|
usagetype = (defined?(rec.usagetype) && rec.usagetype != '') ? rec.usagetype : FIELD_NOT_SUPPORTED
|
166
169
|
addresstype = (defined?(rec.addresstype) && rec.addresstype != '') ? rec.addresstype : FIELD_NOT_SUPPORTED
|
167
170
|
category = (defined?(rec.category) && rec.category != '') ? rec.category : FIELD_NOT_SUPPORTED
|
171
|
+
district = (defined?(rec.district) && rec.district != '') ? rec.district : FIELD_NOT_SUPPORTED
|
172
|
+
asn = (defined?(rec.asn) && rec.asn != '') ? rec.asn : FIELD_NOT_SUPPORTED
|
173
|
+
as = (defined?(rec.as) && rec.as != '') ? rec.as : FIELD_NOT_SUPPORTED
|
168
174
|
else
|
169
175
|
country_short = INVALID_IP_ADDRESS
|
170
176
|
country_long = INVALID_IP_ADDRESS
|
@@ -188,6 +194,9 @@ class Ip2location
|
|
188
194
|
usagetype = INVALID_IP_ADDRESS
|
189
195
|
addresstype = INVALID_IP_ADDRESS
|
190
196
|
category = INVALID_IP_ADDRESS
|
197
|
+
district = INVALID_IP_ADDRESS
|
198
|
+
asn = INVALID_IP_ADDRESS
|
199
|
+
as = INVALID_IP_ADDRESS
|
191
200
|
end
|
192
201
|
else
|
193
202
|
country_short = INVALID_IP_ADDRESS
|
@@ -212,6 +221,9 @@ class Ip2location
|
|
212
221
|
usagetype = INVALID_IP_ADDRESS
|
213
222
|
addresstype = INVALID_IP_ADDRESS
|
214
223
|
category = INVALID_IP_ADDRESS
|
224
|
+
district = INVALID_IP_ADDRESS
|
225
|
+
asn = INVALID_IP_ADDRESS
|
226
|
+
as = INVALID_IP_ADDRESS
|
215
227
|
end
|
216
228
|
results = {}
|
217
229
|
results['country_short'] = country_short
|
@@ -236,6 +248,9 @@ class Ip2location
|
|
236
248
|
results['usagetype'] = usagetype
|
237
249
|
results['addresstype'] = addresstype
|
238
250
|
results['category'] = category
|
251
|
+
results['district'] = district
|
252
|
+
results['asn'] = asn
|
253
|
+
results['as'] = as
|
239
254
|
return results
|
240
255
|
end
|
241
256
|
|
@@ -243,7 +258,7 @@ class Ip2location
|
|
243
258
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
244
259
|
if valid
|
245
260
|
rec = get_record(ip)
|
246
|
-
if
|
261
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
247
262
|
country_short = IPV6_ADDRESS_IN_IPV4_BIN
|
248
263
|
elsif !(rec.nil?)
|
249
264
|
country_short = (defined?(rec.country_short) && rec.country_short != '') ? rec.country_short : FIELD_NOT_SUPPORTED
|
@@ -260,7 +275,7 @@ class Ip2location
|
|
260
275
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
261
276
|
if valid
|
262
277
|
rec = get_record(ip)
|
263
|
-
if
|
278
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
264
279
|
country_long = IPV6_ADDRESS_IN_IPV4_BIN
|
265
280
|
elsif !(rec.nil?)
|
266
281
|
country_long = (defined?(rec.country_long) && rec.country_long != '') ? rec.country_long : FIELD_NOT_SUPPORTED
|
@@ -277,7 +292,7 @@ class Ip2location
|
|
277
292
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
278
293
|
if valid
|
279
294
|
rec = get_record(ip)
|
280
|
-
if
|
295
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
281
296
|
region = IPV6_ADDRESS_IN_IPV4_BIN
|
282
297
|
elsif !(rec.nil?)
|
283
298
|
region = (defined?(rec.region) && rec.region != '') ? rec.region : FIELD_NOT_SUPPORTED
|
@@ -294,7 +309,7 @@ class Ip2location
|
|
294
309
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
295
310
|
if valid
|
296
311
|
rec = get_record(ip)
|
297
|
-
if
|
312
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
298
313
|
city = IPV6_ADDRESS_IN_IPV4_BIN
|
299
314
|
elsif !(rec.nil?)
|
300
315
|
city = (defined?(rec.city) && rec.city != '') ? rec.city : FIELD_NOT_SUPPORTED
|
@@ -311,7 +326,7 @@ class Ip2location
|
|
311
326
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
312
327
|
if valid
|
313
328
|
rec = get_record(ip)
|
314
|
-
if
|
329
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
315
330
|
latitude = IPV6_ADDRESS_IN_IPV4_BIN
|
316
331
|
elsif !(rec.nil?)
|
317
332
|
latitude = (defined?(rec.latitude) && rec.latitude != '') ? rec.latitude : FIELD_NOT_SUPPORTED
|
@@ -328,7 +343,7 @@ class Ip2location
|
|
328
343
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
329
344
|
if valid
|
330
345
|
rec = get_record(ip)
|
331
|
-
if
|
346
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
332
347
|
longitude = IPV6_ADDRESS_IN_IPV4_BIN
|
333
348
|
elsif !(rec.nil?)
|
334
349
|
longitude = (defined?(rec.longitude) && rec.longitude != '') ? rec.longitude : FIELD_NOT_SUPPORTED
|
@@ -345,7 +360,7 @@ class Ip2location
|
|
345
360
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
346
361
|
if valid
|
347
362
|
rec = get_record(ip)
|
348
|
-
if
|
363
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
349
364
|
isp = IPV6_ADDRESS_IN_IPV4_BIN
|
350
365
|
elsif !(rec.nil?)
|
351
366
|
isp = (defined?(rec.isp) && rec.isp != '') ? rec.isp : FIELD_NOT_SUPPORTED
|
@@ -362,7 +377,7 @@ class Ip2location
|
|
362
377
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
363
378
|
if valid
|
364
379
|
rec = get_record(ip)
|
365
|
-
if
|
380
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
366
381
|
domain = IPV6_ADDRESS_IN_IPV4_BIN
|
367
382
|
elsif !(rec.nil?)
|
368
383
|
domain = (defined?(rec.domain) && rec.domain != '') ? rec.domain : FIELD_NOT_SUPPORTED
|
@@ -379,7 +394,7 @@ class Ip2location
|
|
379
394
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
380
395
|
if valid
|
381
396
|
rec = get_record(ip)
|
382
|
-
if
|
397
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
383
398
|
zipcode = IPV6_ADDRESS_IN_IPV4_BIN
|
384
399
|
elsif !(rec.nil?)
|
385
400
|
zipcode = (defined?(rec.zipcode) && rec.zipcode != '') ? rec.zipcode : FIELD_NOT_SUPPORTED
|
@@ -396,7 +411,7 @@ class Ip2location
|
|
396
411
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
397
412
|
if valid
|
398
413
|
rec = get_record(ip)
|
399
|
-
if
|
414
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
400
415
|
timezone = IPV6_ADDRESS_IN_IPV4_BIN
|
401
416
|
elsif !(rec.nil?)
|
402
417
|
timezone = (defined?(rec.timezone) && rec.timezone != '') ? rec.timezone : FIELD_NOT_SUPPORTED
|
@@ -413,7 +428,7 @@ class Ip2location
|
|
413
428
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
414
429
|
if valid
|
415
430
|
rec = get_record(ip)
|
416
|
-
if
|
431
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
417
432
|
netspeed = IPV6_ADDRESS_IN_IPV4_BIN
|
418
433
|
elsif !(rec.nil?)
|
419
434
|
netspeed = (defined?(rec.netspeed) && rec.netspeed != '') ? rec.netspeed : FIELD_NOT_SUPPORTED
|
@@ -430,7 +445,7 @@ class Ip2location
|
|
430
445
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
431
446
|
if valid
|
432
447
|
rec = get_record(ip)
|
433
|
-
if
|
448
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
434
449
|
iddcode = IPV6_ADDRESS_IN_IPV4_BIN
|
435
450
|
elsif !(rec.nil?)
|
436
451
|
iddcode = (defined?(rec.iddcode) && rec.iddcode != '') ? rec.iddcode : FIELD_NOT_SUPPORTED
|
@@ -447,7 +462,7 @@ class Ip2location
|
|
447
462
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
448
463
|
if valid
|
449
464
|
rec = get_record(ip)
|
450
|
-
if
|
465
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
451
466
|
areacode = IPV6_ADDRESS_IN_IPV4_BIN
|
452
467
|
elsif !(rec.nil?)
|
453
468
|
areacode = (defined?(rec.areacode) && rec.areacode != '') ? rec.areacode : FIELD_NOT_SUPPORTED
|
@@ -464,7 +479,7 @@ class Ip2location
|
|
464
479
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
465
480
|
if valid
|
466
481
|
rec = get_record(ip)
|
467
|
-
if
|
482
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
468
483
|
weatherstationcode = IPV6_ADDRESS_IN_IPV4_BIN
|
469
484
|
elsif !(rec.nil?)
|
470
485
|
weatherstationcode = (defined?(rec.weatherstationcode) && rec.weatherstationcode != '') ? rec.weatherstationcode : FIELD_NOT_SUPPORTED
|
@@ -481,7 +496,7 @@ class Ip2location
|
|
481
496
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
482
497
|
if valid
|
483
498
|
rec = get_record(ip)
|
484
|
-
if
|
499
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
485
500
|
weatherstationname = IPV6_ADDRESS_IN_IPV4_BIN
|
486
501
|
elsif !(rec.nil?)
|
487
502
|
weatherstationname = (defined?(rec.weatherstationname) && rec.weatherstationname != '') ? rec.weatherstationname : FIELD_NOT_SUPPORTED
|
@@ -498,7 +513,7 @@ class Ip2location
|
|
498
513
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
499
514
|
if valid
|
500
515
|
rec = get_record(ip)
|
501
|
-
if
|
516
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
502
517
|
mcc = IPV6_ADDRESS_IN_IPV4_BIN
|
503
518
|
elsif !(rec.nil?)
|
504
519
|
mcc = (defined?(rec.mcc) && rec.mcc != '') ? rec.mcc : FIELD_NOT_SUPPORTED
|
@@ -515,7 +530,7 @@ class Ip2location
|
|
515
530
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
516
531
|
if valid
|
517
532
|
rec = get_record(ip)
|
518
|
-
if
|
533
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
519
534
|
mnc = IPV6_ADDRESS_IN_IPV4_BIN
|
520
535
|
elsif !(rec.nil?)
|
521
536
|
mnc = (defined?(rec.mnc) && rec.mnc != '') ? rec.mnc : FIELD_NOT_SUPPORTED
|
@@ -532,7 +547,7 @@ class Ip2location
|
|
532
547
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
533
548
|
if valid
|
534
549
|
rec = get_record(ip)
|
535
|
-
if
|
550
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
536
551
|
mobilebrand = IPV6_ADDRESS_IN_IPV4_BIN
|
537
552
|
elsif !(rec.nil?)
|
538
553
|
mobilebrand = (defined?(rec.mobilebrand) && rec.mobilebrand != '') ? rec.mobilebrand : FIELD_NOT_SUPPORTED
|
@@ -549,7 +564,7 @@ class Ip2location
|
|
549
564
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
550
565
|
if valid
|
551
566
|
rec = get_record(ip)
|
552
|
-
if
|
567
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
553
568
|
elevation = IPV6_ADDRESS_IN_IPV4_BIN
|
554
569
|
elsif !(rec.nil?)
|
555
570
|
elevation = (defined?(rec.elevation) && rec.elevation != '') ? rec.elevation : FIELD_NOT_SUPPORTED
|
@@ -566,7 +581,7 @@ class Ip2location
|
|
566
581
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
567
582
|
if valid
|
568
583
|
rec = get_record(ip)
|
569
|
-
if
|
584
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
570
585
|
usagetype = IPV6_ADDRESS_IN_IPV4_BIN
|
571
586
|
elsif !(rec.nil?)
|
572
587
|
usagetype = (defined?(rec.usagetype) && rec.usagetype != '') ? rec.usagetype : FIELD_NOT_SUPPORTED
|
@@ -583,7 +598,7 @@ class Ip2location
|
|
583
598
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
584
599
|
if valid
|
585
600
|
rec = get_record(ip)
|
586
|
-
if
|
601
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
587
602
|
addresstype = IPV6_ADDRESS_IN_IPV4_BIN
|
588
603
|
elsif !(rec.nil?)
|
589
604
|
addresstype = (defined?(rec.addresstype) && rec.addresstype != '') ? rec.addresstype : FIELD_NOT_SUPPORTED
|
@@ -600,7 +615,7 @@ class Ip2location
|
|
600
615
|
valid = !(IPAddr.new(ip) rescue nil).nil?
|
601
616
|
if valid
|
602
617
|
rec = get_record(ip)
|
603
|
-
if
|
618
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
604
619
|
category = IPV6_ADDRESS_IN_IPV4_BIN
|
605
620
|
elsif !(rec.nil?)
|
606
621
|
category = (defined?(rec.category) && rec.category != '') ? rec.category : FIELD_NOT_SUPPORTED
|
@@ -613,6 +628,57 @@ class Ip2location
|
|
613
628
|
return category
|
614
629
|
end
|
615
630
|
|
631
|
+
def get_district(ip)
|
632
|
+
valid = !(IPAddr.new(ip) rescue nil).nil?
|
633
|
+
if valid
|
634
|
+
rec = get_record(ip)
|
635
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
636
|
+
district = IPV6_ADDRESS_IN_IPV4_BIN
|
637
|
+
elsif !(rec.nil?)
|
638
|
+
district = (defined?(rec.district) && rec.district != '') ? rec.district : FIELD_NOT_SUPPORTED
|
639
|
+
else
|
640
|
+
district = INVALID_IP_ADDRESS
|
641
|
+
end
|
642
|
+
else
|
643
|
+
district = INVALID_IP_ADDRESS
|
644
|
+
end
|
645
|
+
return district
|
646
|
+
end
|
647
|
+
|
648
|
+
def get_asn(ip)
|
649
|
+
valid = !(IPAddr.new(ip) rescue nil).nil?
|
650
|
+
if valid
|
651
|
+
rec = get_record(ip)
|
652
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
653
|
+
asn = IPV6_ADDRESS_IN_IPV4_BIN
|
654
|
+
elsif !(rec.nil?)
|
655
|
+
asn = (defined?(rec.asn) && rec.asn != '') ? rec.asn : FIELD_NOT_SUPPORTED
|
656
|
+
else
|
657
|
+
asn = INVALID_IP_ADDRESS
|
658
|
+
end
|
659
|
+
else
|
660
|
+
asn = INVALID_IP_ADDRESS
|
661
|
+
end
|
662
|
+
return asn
|
663
|
+
end
|
664
|
+
|
665
|
+
def get_as(ip)
|
666
|
+
valid = !(IPAddr.new(ip) rescue nil).nil?
|
667
|
+
if valid
|
668
|
+
rec = get_record(ip)
|
669
|
+
if rec == IPV6_ADDRESS_IN_IPV4_BIN
|
670
|
+
as = IPV6_ADDRESS_IN_IPV4_BIN
|
671
|
+
elsif !(rec.nil?)
|
672
|
+
as = (defined?(rec.as) && rec.as != '') ? rec.as : FIELD_NOT_SUPPORTED
|
673
|
+
else
|
674
|
+
as = INVALID_IP_ADDRESS
|
675
|
+
end
|
676
|
+
else
|
677
|
+
as = INVALID_IP_ADDRESS
|
678
|
+
end
|
679
|
+
return as
|
680
|
+
end
|
681
|
+
|
616
682
|
def bsearch(low, high, ipnum, base_addr, col_length)
|
617
683
|
while low <= high do
|
618
684
|
mid = (low + high) >> 1
|
Binary file
|
@@ -139,6 +139,24 @@ describe "Ip2location" do
|
|
139
139
|
expect(record).to eq 'NOT SUPPORTED'
|
140
140
|
end
|
141
141
|
|
142
|
+
it "work correctly with get_district" do
|
143
|
+
i2l = Ip2location.new.open(File.dirname(__FILE__) + "/assets/IP2LOCATION-LITE-DB1.IPV6.BIN")
|
144
|
+
record = i2l.get_district('8.8.8.8')
|
145
|
+
expect(record).to eq 'NOT SUPPORTED'
|
146
|
+
end
|
147
|
+
|
148
|
+
it "work correctly with get_asn" do
|
149
|
+
i2l = Ip2location.new.open(File.dirname(__FILE__) + "/assets/IP2LOCATION-LITE-DB1.IPV6.BIN")
|
150
|
+
record = i2l.get_asn('8.8.8.8')
|
151
|
+
expect(record).to eq 'NOT SUPPORTED'
|
152
|
+
end
|
153
|
+
|
154
|
+
it "work correctly with get_as" do
|
155
|
+
i2l = Ip2location.new.open(File.dirname(__FILE__) + "/assets/IP2LOCATION-LITE-DB1.IPV6.BIN")
|
156
|
+
record = i2l.get_as('8.8.8.8')
|
157
|
+
expect(record).to eq 'NOT SUPPORTED'
|
158
|
+
end
|
159
|
+
|
142
160
|
it "work correctly with ipv6" do
|
143
161
|
i2l = Ip2location.new.open(File.dirname(__FILE__) + "/assets/IP2LOCATION-LITE-DB1.IPV6.BIN")
|
144
162
|
record = i2l.get_all('2001:4860:4860::8888')
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ip2location_ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 8.
|
4
|
+
version: 8.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ip2location
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-04-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bindata
|