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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3b96ea3f6c523f75a72a00b44179ed6cfa7101bcd9adacc1edfb58b74df8885e
4
- data.tar.gz: c3e223b2caf2b0b8e72d80586229db8addb576a8286878f3cda360194f411562
3
+ metadata.gz: 07d9738099db961a6661f7266017f4f5cf8156cb0b0e2063bf1e2a246dfe39f4
4
+ data.tar.gz: 9f4e8c1f7c60a58687e8d922816e69e6ddbaa4f4bd06dd9b0938a194278f8188
5
5
  SHA512:
6
- metadata.gz: 8f587dfa25da7d4437c4dfb6089e5806461acc6917b4201922ac4dcf492e8d78507e003a4229afd324aee99d92851711fb1ed3f6071aa30934df7fa5dd164621
7
- data.tar.gz: 8b8522bee147a05b3c799deaf8fbc4eacf26bf8109a4ad00e7fde806bd3462bc3909917075041a61352bfabbe922e0eee77742dfbb0793e230c998fdf58b4505
6
+ metadata.gz: 5417dcb43c59394ad2500f0e79ec109fc75bb70b0afca917c3150cd0ac6da7168e94b4381e01624fa8ee43ef05a9ed5bd148a4539c6d90ab23ed927cd2ff4cd2
7
+ data.tar.gz: 7a60ef9c3759e47b1c2699378103fbfbf3fde9e8007ecfee424739a9226cd0b9e24852e1e11b4f758f2fb67e9eeefc06845688da98d42043b02aaa4d9c8187c3
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2022 IP2Location ( support@ip2location.com )
1
+ Copyright (c) 2023 IP2Location ( support@ip2location.com )
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/VERSION CHANGED
@@ -1 +1 @@
1
- 8.6.0
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')
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "ip2location_ruby"
3
- s.version = "8.6.0"
3
+ s.version = "8.7.0"
4
4
 
5
5
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
6
  s.require_paths = ["lib"]
@@ -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)
@@ -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.6.0'
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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 rec == IPV6_ADDRESS_IN_IPV4_BIN
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.6.0
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: 2022-10-20 00:00:00.000000000 Z
11
+ date: 2023-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bindata