maxmind-geoip2 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -0
- data/README.md +4 -6
- data/lib/maxmind/geoip2/client.rb +1 -1
- data/lib/maxmind/geoip2/errors.rb +17 -8
- data/lib/maxmind/geoip2/model/city.rb +1 -1
- data/lib/maxmind/geoip2/model/enterprise.rb +1 -1
- data/lib/maxmind/geoip2/model/insights.rb +1 -1
- data/lib/maxmind/geoip2/model/isp.rb +16 -0
- data/lib/maxmind/geoip2/reader.rb +1 -2
- data/lib/maxmind/geoip2/record/traits.rb +23 -3
- data/maxmind-geoip2.gemspec +2 -1
- data/test/data/MaxMind-DB-spec.md +15 -11
- data/test/data/source-data/GeoIP2-City-Test.json +81 -48
- data/test/data/source-data/GeoIP2-Connection-Type-Test.json +20 -0
- data/test/data/source-data/GeoIP2-Country-Test.json +46 -58
- data/test/data/source-data/GeoIP2-Enterprise-Test.json +61 -3
- data/test/data/source-data/GeoIP2-ISP-Test.json +10 -0
- data/test/data/source-data/GeoIP2-Precision-Enterprise-Test.json +61 -4
- data/test/data/source-data/GeoLite2-ASN-Test.json +4091 -8
- data/test/data/source-data/GeoLite2-City-Test.json +12804 -0
- data/test/data/source-data/GeoLite2-Country-Test.json +11280 -0
- data/test/data/test-data/GeoIP2-Anonymous-IP-Test.mmdb +0 -0
- data/test/data/test-data/GeoIP2-City-Test-Broken-Double-Format.mmdb +0 -0
- data/test/data/test-data/GeoIP2-City-Test-Invalid-Node-Count.mmdb +0 -0
- data/test/data/test-data/GeoIP2-City-Test.mmdb +0 -0
- data/test/data/test-data/GeoIP2-Connection-Type-Test.mmdb +0 -0
- data/test/data/test-data/GeoIP2-Country-Test.mmdb +0 -0
- data/test/data/test-data/GeoIP2-DensityIncome-Test.mmdb +0 -0
- data/test/data/test-data/GeoIP2-Domain-Test.mmdb +0 -0
- data/test/data/test-data/GeoIP2-Enterprise-Test.mmdb +0 -0
- data/test/data/test-data/GeoIP2-ISP-Test.mmdb +0 -0
- data/test/data/test-data/GeoIP2-Precision-Enterprise-Test.mmdb +0 -0
- data/test/data/test-data/GeoIP2-Static-IP-Score-Test.mmdb +0 -0
- data/test/data/test-data/GeoIP2-User-Count-Test.mmdb +0 -0
- data/test/data/test-data/GeoLite2-ASN-Test.mmdb +0 -0
- data/test/data/test-data/GeoLite2-City-Test.mmdb +0 -0
- data/test/data/test-data/GeoLite2-Country-Test.mmdb +0 -0
- data/test/data/test-data/MaxMind-DB-no-ipv4-search-tree.mmdb +0 -0
- data/test/data/test-data/MaxMind-DB-string-value-entries.mmdb +0 -0
- data/test/data/test-data/MaxMind-DB-test-broken-pointers-24.mmdb +0 -0
- data/test/data/test-data/MaxMind-DB-test-broken-search-tree-24.mmdb +0 -0
- data/test/data/test-data/MaxMind-DB-test-decoder.mmdb +0 -0
- data/test/data/test-data/MaxMind-DB-test-ipv4-24.mmdb +0 -0
- data/test/data/test-data/MaxMind-DB-test-ipv4-28.mmdb +0 -0
- data/test/data/test-data/MaxMind-DB-test-ipv4-32.mmdb +0 -0
- data/test/data/test-data/MaxMind-DB-test-ipv6-24.mmdb +0 -0
- data/test/data/test-data/MaxMind-DB-test-ipv6-28.mmdb +0 -0
- data/test/data/test-data/MaxMind-DB-test-ipv6-32.mmdb +0 -0
- data/test/data/test-data/MaxMind-DB-test-metadata-pointers.mmdb +0 -0
- data/test/data/test-data/MaxMind-DB-test-mixed-24.mmdb +0 -0
- data/test/data/test-data/MaxMind-DB-test-mixed-28.mmdb +0 -0
- data/test/data/test-data/MaxMind-DB-test-mixed-32.mmdb +0 -0
- data/test/data/test-data/MaxMind-DB-test-nested.mmdb +0 -0
- data/test/data/test-data/MaxMind-DB-test-pointer-decoder.mmdb +0 -0
- data/test/data/test-data/README.md +3 -3
- data/test/data/test-data/write-test-data.pl +9 -5
- data/test/test_reader.rb +18 -2
- metadata +8 -4
- data/test/data/MaxMind-DB-test-metadata-pointers.mmdb +0 -0
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -10,17 +10,17 @@ pointers to map keys and values, as well as to the whole map.
|
|
10
10
|
|
11
11
|
There are several ways to figure out what IP addresses are actually in the
|
12
12
|
test databases. You can take a look at the
|
13
|
-
[source-data directory](https://github.com/maxmind/MaxMind-DB/tree/
|
13
|
+
[source-data directory](https://github.com/maxmind/MaxMind-DB/tree/main/source-data)
|
14
14
|
in this repository. This directory contains JSON files which are used to
|
15
15
|
generate many (but not all) of the database files.
|
16
16
|
|
17
17
|
You can also use the
|
18
|
-
[mmdb-dump-database script](https://github.com/maxmind/MaxMind-DB-Reader-perl/blob/
|
18
|
+
[mmdb-dump-database script](https://github.com/maxmind/MaxMind-DB-Reader-perl/blob/main/eg/mmdb-dump-database)
|
19
19
|
in the
|
20
20
|
[MaxMind-DB-Reader-perl repository](https://github.com/maxmind/MaxMind-DB-Reader-perl).
|
21
21
|
|
22
22
|
Some databases are intentionally broken and cannot be dumped. You can look at
|
23
23
|
the
|
24
|
-
[script which generates these databases](https://github.com/maxmind/MaxMind-DB/blob/
|
24
|
+
[script which generates these databases](https://github.com/maxmind/MaxMind-DB/blob/main/test-data/write-test-data.pl)
|
25
25
|
to see what IP addresses they include, which will be necessary for those
|
26
26
|
databases which cannot be dumped because they contain intentional errors.
|
@@ -19,7 +19,7 @@ use Test::MaxMind::DB::Common::Util qw( standard_test_metadata );
|
|
19
19
|
my $Dir = dirname( abs_path($0) );
|
20
20
|
|
21
21
|
sub main {
|
22
|
-
my @sizes
|
22
|
+
my @sizes = ( 24, 28, 32 );
|
23
23
|
my @ipv4_range = ( '1.1.1.1', '1.1.1.32' );
|
24
24
|
|
25
25
|
my @ipv4_subnets = Net::Works::Network->range_as_subnets(@ipv4_range);
|
@@ -243,7 +243,7 @@ sub write_test_db {
|
|
243
243
|
::4.5.6.7/128
|
244
244
|
abcd::/64
|
245
245
|
1000::1234:0000/112
|
246
|
-
|
246
|
+
);
|
247
247
|
|
248
248
|
for my $subnet (@subnets) {
|
249
249
|
$writer->insert_network(
|
@@ -379,7 +379,7 @@ sub write_test_db {
|
|
379
379
|
::4.5.6.7/128
|
380
380
|
abcd::/64
|
381
381
|
1000::1234:0000/112
|
382
|
-
|
382
|
+
);
|
383
383
|
|
384
384
|
for my $subnet (@subnets) {
|
385
385
|
$writer->insert_network(
|
@@ -411,6 +411,8 @@ sub write_geoip2_dbs {
|
|
411
411
|
['GeoIP2-Static-IP-Score'],
|
412
412
|
['GeoIP2-User-Count'],
|
413
413
|
['GeoLite2-ASN'],
|
414
|
+
['GeoLite2-City'],
|
415
|
+
['GeoLite2-Country'],
|
414
416
|
);
|
415
417
|
}
|
416
418
|
|
@@ -485,6 +487,8 @@ sub _universal_map_key_type_callback {
|
|
485
487
|
location => 'map',
|
486
488
|
longitude => 'double',
|
487
489
|
metro_code => 'uint16',
|
490
|
+
mobile_country_code => 'utf8_string',
|
491
|
+
mobile_network_code => 'utf8_string',
|
488
492
|
names => 'map',
|
489
493
|
organization => 'utf8_string',
|
490
494
|
population_density => 'uint32',
|
@@ -655,7 +659,7 @@ sub write_test_serialization_data {
|
|
655
659
|
$serializer->store_data( map => { long_key => 'long_value1' } );
|
656
660
|
$serializer->store_data( map => { long_key2 => 'long_value2' } );
|
657
661
|
|
658
|
-
open my $fh, '>',
|
662
|
+
open my $fh, '>', "$Dir/maps-with-pointers.raw";
|
659
663
|
print {$fh} ${ $serializer->buffer() }
|
660
664
|
or die "Cannot write to maps-with-pointers.raw: $!";
|
661
665
|
close $fh;
|
@@ -681,7 +685,7 @@ sub write_db_with_metadata_pointers {
|
|
681
685
|
|
682
686
|
_populate_all_networks( $writer, {} );
|
683
687
|
|
684
|
-
open my $fh, '>',
|
688
|
+
open my $fh, '>', "$Dir/MaxMind-DB-test-metadata-pointers.mmdb";
|
685
689
|
|
686
690
|
$writer->write_tree($fh);
|
687
691
|
|
data/test/test_reader.rb
CHANGED
@@ -150,7 +150,7 @@ class ReaderTest < Minitest::Test
|
|
150
150
|
assert_equal('Europe', record.continent.name)
|
151
151
|
|
152
152
|
assert_equal(2_635_167, record.country.geoname_id)
|
153
|
-
assert_equal(
|
153
|
+
assert_equal(false, record.country.in_european_union?)
|
154
154
|
assert_equal('GB', record.country.iso_code)
|
155
155
|
assert_equal(
|
156
156
|
{
|
@@ -266,6 +266,14 @@ class ReaderTest < Minitest::Test
|
|
266
266
|
assert_equal(ip_address, record.traits.ip_address)
|
267
267
|
assert_equal('74.209.16.0/20', record.traits.network)
|
268
268
|
|
269
|
+
# This IP has MCC/MNC data.
|
270
|
+
|
271
|
+
ip_address = '149.101.100.0'
|
272
|
+
record = reader.enterprise(ip_address)
|
273
|
+
|
274
|
+
assert_equal('310', record.traits.mobile_country_code)
|
275
|
+
assert_equal('004', record.traits.mobile_network_code)
|
276
|
+
|
269
277
|
reader.close
|
270
278
|
end
|
271
279
|
|
@@ -283,6 +291,14 @@ class ReaderTest < Minitest::Test
|
|
283
291
|
assert_equal(ip, record.ip_address)
|
284
292
|
assert_equal('1.128.0.0/11', record.network)
|
285
293
|
|
294
|
+
# This IP has MCC/MNC data.
|
295
|
+
|
296
|
+
ip_address = '149.101.100.0'
|
297
|
+
record = reader.isp(ip_address)
|
298
|
+
|
299
|
+
assert_equal('310', record.mobile_country_code)
|
300
|
+
assert_equal('004', record.mobile_network_code)
|
301
|
+
|
286
302
|
reader.close
|
287
303
|
end
|
288
304
|
|
@@ -416,7 +432,7 @@ class ReaderTest < Minitest::Test
|
|
416
432
|
"test/data/test-data/GeoIP2-#{t['file']}-Test.mmdb",
|
417
433
|
)
|
418
434
|
record = reader.send(t['method'], '81.2.69.160')
|
419
|
-
assert_equal(
|
435
|
+
assert_equal(false, record.country.in_european_union?)
|
420
436
|
assert_equal(false, record.registered_country.in_european_union?)
|
421
437
|
reader.close
|
422
438
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: maxmind-geoip2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Storey
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: connection_pool
|
@@ -170,7 +170,6 @@ files:
|
|
170
170
|
- maxmind-geoip2.gemspec
|
171
171
|
- test/data/LICENSE
|
172
172
|
- test/data/MaxMind-DB-spec.md
|
173
|
-
- test/data/MaxMind-DB-test-metadata-pointers.mmdb
|
174
173
|
- test/data/README.md
|
175
174
|
- test/data/bad-data/README.md
|
176
175
|
- test/data/bad-data/libmaxminddb/libmaxminddb-offset-integer-overflow.mmdb
|
@@ -195,6 +194,8 @@ files:
|
|
195
194
|
- test/data/source-data/GeoIP2-Static-IP-Score-Test.json
|
196
195
|
- test/data/source-data/GeoIP2-User-Count-Test.json
|
197
196
|
- test/data/source-data/GeoLite2-ASN-Test.json
|
197
|
+
- test/data/source-data/GeoLite2-City-Test.json
|
198
|
+
- test/data/source-data/GeoLite2-Country-Test.json
|
198
199
|
- test/data/source-data/README
|
199
200
|
- test/data/test-data/GeoIP2-Anonymous-IP-Test.mmdb
|
200
201
|
- test/data/test-data/GeoIP2-City-Test-Broken-Double-Format.mmdb
|
@@ -210,6 +211,8 @@ files:
|
|
210
211
|
- test/data/test-data/GeoIP2-Static-IP-Score-Test.mmdb
|
211
212
|
- test/data/test-data/GeoIP2-User-Count-Test.mmdb
|
212
213
|
- test/data/test-data/GeoLite2-ASN-Test.mmdb
|
214
|
+
- test/data/test-data/GeoLite2-City-Test.mmdb
|
215
|
+
- test/data/test-data/GeoLite2-Country-Test.mmdb
|
213
216
|
- test/data/test-data/MaxMind-DB-no-ipv4-search-tree.mmdb
|
214
217
|
- test/data/test-data/MaxMind-DB-string-value-entries.mmdb
|
215
218
|
- test/data/test-data/MaxMind-DB-test-broken-pointers-24.mmdb
|
@@ -244,6 +247,7 @@ metadata:
|
|
244
247
|
changelog_uri: https://github.com/maxmind/GeoIP2-ruby/blob/main/CHANGELOG.md
|
245
248
|
documentation_uri: https://www.rubydoc.info/gems/maxmind-geoip2
|
246
249
|
homepage_uri: https://github.com/maxmind/GeoIP2-ruby
|
250
|
+
rubygems_mfa_required: 'true'
|
247
251
|
source_code_uri: https://github.com/maxmind/GeoIP2-ruby
|
248
252
|
post_install_message:
|
249
253
|
rdoc_options: []
|
@@ -260,7 +264,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
260
264
|
- !ruby/object:Gem::Version
|
261
265
|
version: '0'
|
262
266
|
requirements: []
|
263
|
-
rubygems_version: 3.2.
|
267
|
+
rubygems_version: 3.2.22
|
264
268
|
signing_key:
|
265
269
|
specification_version: 4
|
266
270
|
summary: A gem for interacting with the GeoIP2 webservices and databases.
|
Binary file
|