ip2location_ruby 8.6.0 → 8.7.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|