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 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