maxmind-geoip2 1.0.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +27 -0
  3. data/README.md +13 -10
  4. data/lib/maxmind/geoip2/client.rb +18 -9
  5. data/lib/maxmind/geoip2/errors.rb +17 -8
  6. data/lib/maxmind/geoip2/model/city.rb +4 -5
  7. data/lib/maxmind/geoip2/model/connection_type.rb +3 -2
  8. data/lib/maxmind/geoip2/model/enterprise.rb +2 -3
  9. data/lib/maxmind/geoip2/model/insights.rb +3 -5
  10. data/lib/maxmind/geoip2/model/isp.rb +16 -0
  11. data/lib/maxmind/geoip2/reader.rb +1 -2
  12. data/lib/maxmind/geoip2/record/traits.rb +58 -26
  13. data/lib/maxmind/geoip2/version.rb +8 -0
  14. data/maxmind-geoip2.gemspec +8 -2
  15. data/test/data/MaxMind-DB-spec.md +15 -11
  16. data/test/data/cmd/write-test-data/main.go +68 -0
  17. data/test/data/go.mod +13 -0
  18. data/test/data/go.sum +16 -0
  19. data/test/data/perltidyrc +6 -0
  20. data/test/data/pkg/writer/decoder.go +178 -0
  21. data/test/data/pkg/writer/geoip2.go +182 -0
  22. data/test/data/pkg/writer/ip.go +39 -0
  23. data/test/data/pkg/writer/maxmind.go +245 -0
  24. data/test/data/pkg/writer/nestedstructures.go +73 -0
  25. data/test/data/pkg/writer/writer.go +58 -0
  26. data/test/data/source-data/GeoIP2-City-Test.json +402 -48
  27. data/test/data/source-data/GeoIP2-Connection-Type-Test.json +35 -10
  28. data/test/data/source-data/GeoIP2-Country-Test.json +145 -58
  29. data/test/data/source-data/GeoIP2-Domain-Test.json +5 -0
  30. data/test/data/source-data/GeoIP2-Enterprise-Test.json +408 -4
  31. data/test/data/source-data/GeoIP2-ISP-Test.json +10 -0
  32. data/test/data/source-data/GeoIP2-Precision-Enterprise-Sandbox-Test.json +296 -0
  33. data/test/data/source-data/GeoIP2-Precision-Enterprise-Test.json +473 -6
  34. data/test/data/source-data/GeoIP2-Static-IP-Score-Test.json +15 -0
  35. data/test/data/source-data/GeoIP2-User-Count-Test.json +18 -0
  36. data/test/data/source-data/GeoLite2-ASN-Test.json +4091 -8
  37. data/test/data/source-data/GeoLite2-City-Test.json +12972 -0
  38. data/test/data/source-data/GeoLite2-Country-Test.json +11372 -0
  39. data/test/data/test-data/GeoIP2-Anonymous-IP-Test.mmdb +0 -0
  40. data/test/data/test-data/GeoIP2-City-Test-Broken-Double-Format.mmdb +0 -0
  41. data/test/data/test-data/GeoIP2-City-Test-Invalid-Node-Count.mmdb +0 -0
  42. data/test/data/test-data/GeoIP2-City-Test.mmdb +0 -0
  43. data/test/data/test-data/GeoIP2-Connection-Type-Test.mmdb +0 -0
  44. data/test/data/test-data/GeoIP2-Country-Test.mmdb +0 -0
  45. data/test/data/test-data/GeoIP2-DensityIncome-Test.mmdb +0 -0
  46. data/test/data/test-data/GeoIP2-Domain-Test.mmdb +0 -0
  47. data/test/data/test-data/GeoIP2-Enterprise-Test.mmdb +0 -0
  48. data/test/data/test-data/GeoIP2-ISP-Test.mmdb +0 -0
  49. data/test/data/test-data/GeoIP2-Precision-Enterprise-Test.mmdb +0 -0
  50. data/test/data/test-data/GeoIP2-Static-IP-Score-Test.mmdb +0 -0
  51. data/test/data/test-data/GeoIP2-User-Count-Test.mmdb +0 -0
  52. data/test/data/test-data/GeoLite2-ASN-Test.mmdb +0 -0
  53. data/test/data/test-data/GeoLite2-City-Test.mmdb +0 -0
  54. data/test/data/test-data/GeoLite2-Country-Test.mmdb +0 -0
  55. data/test/data/test-data/MaxMind-DB-no-ipv4-search-tree.mmdb +0 -0
  56. data/test/data/test-data/MaxMind-DB-string-value-entries.mmdb +0 -0
  57. data/test/data/test-data/MaxMind-DB-test-broken-pointers-24.mmdb +0 -0
  58. data/test/data/test-data/MaxMind-DB-test-broken-search-tree-24.mmdb +0 -0
  59. data/test/data/test-data/MaxMind-DB-test-decoder.mmdb +0 -0
  60. data/test/data/test-data/MaxMind-DB-test-ipv4-24.mmdb +0 -0
  61. data/test/data/test-data/MaxMind-DB-test-ipv4-28.mmdb +0 -0
  62. data/test/data/test-data/MaxMind-DB-test-ipv4-32.mmdb +0 -0
  63. data/test/data/test-data/MaxMind-DB-test-ipv6-24.mmdb +0 -0
  64. data/test/data/test-data/MaxMind-DB-test-ipv6-28.mmdb +0 -0
  65. data/test/data/test-data/MaxMind-DB-test-ipv6-32.mmdb +0 -0
  66. data/test/data/test-data/MaxMind-DB-test-metadata-pointers.mmdb +0 -0
  67. data/test/data/test-data/MaxMind-DB-test-mixed-24.mmdb +0 -0
  68. data/test/data/test-data/MaxMind-DB-test-mixed-28.mmdb +0 -0
  69. data/test/data/test-data/MaxMind-DB-test-mixed-32.mmdb +0 -0
  70. data/test/data/test-data/MaxMind-DB-test-nested.mmdb +0 -0
  71. data/test/data/test-data/MaxMind-DB-test-pointer-decoder.mmdb +0 -0
  72. data/test/data/test-data/README.md +30 -14
  73. data/test/test_client.rb +18 -2
  74. data/test/test_reader.rb +37 -3
  75. metadata +21 -8
  76. data/test/data/MaxMind-DB-test-metadata-pointers.mmdb +0 -0
  77. data/test/data/source-data/README +0 -15
  78. data/test/data/test-data/write-test-data.pl +0 -691
@@ -25,7 +25,6 @@
25
25
  "country" : {
26
26
  "confidence" : 95,
27
27
  "geoname_id" : 2635167,
28
- "is_in_european_union" : true,
29
28
  "iso_code" : "GB",
30
29
  "names" : {
31
30
  "de" : "Vereinigtes Königreich",
@@ -280,7 +279,6 @@
280
279
  "country" : {
281
280
  "confidence" : 99,
282
281
  "geoname_id" : 2635167,
283
- "is_in_european_union" : true,
284
282
  "iso_code" : "GB",
285
283
  "names" : {
286
284
  "de" : "Vereinigtes Königreich",
@@ -423,6 +421,67 @@
423
421
  }
424
422
  }
425
423
  },
424
+ {
425
+ "::149.101.100.0/124" : {
426
+ "continent" : {
427
+ "code" : "NA",
428
+ "geoname_id" : 6255149,
429
+ "names" : {
430
+ "de" : "Nordamerika",
431
+ "en" : "North America",
432
+ "es" : "América del Norte",
433
+ "fr" : "Amérique du Nord",
434
+ "ja" : "北アメリカ",
435
+ "pt-BR" : "América do Norte",
436
+ "ru" : "Северная Америка",
437
+ "zh-CN" : "北美洲"
438
+ }
439
+ },
440
+ "country" : {
441
+ "confidence" : 99,
442
+ "geoname_id" : 6252001,
443
+ "iso_code" : "US",
444
+ "names" : {
445
+ "de" : "USA",
446
+ "en" : "United States",
447
+ "es" : "Estados Unidos",
448
+ "fr" : "États-Unis",
449
+ "ja" : "アメリカ合衆国",
450
+ "pt-BR" : "Estados Unidos",
451
+ "ru" : "США",
452
+ "zh-CN" : "美国"
453
+ }
454
+ },
455
+ "location" : {
456
+ "accuracy_radius" : 1000,
457
+ "latitude" : 37.751,
458
+ "longitude" : -97.822,
459
+ "time_zone" : "America/Chicago"
460
+ },
461
+ "registered_country" : {
462
+ "geoname_id" : 2635167,
463
+ "iso_code" : "GB",
464
+ "names" : {
465
+ "de" : "Vereinigtes Königreich",
466
+ "en" : "United Kingdom",
467
+ "es" : "Reino Unido",
468
+ "fr" : "Royaume-Uni",
469
+ "ja" : "イギリス",
470
+ "pt-BR" : "Reino Unido",
471
+ "ru" : "Великобритания",
472
+ "zh-CN" : "英国"
473
+ }
474
+ },
475
+ "traits" : {
476
+ "autonomous_system_number" : 6167,
477
+ "autonomous_system_organization" : "CELLCO-PART",
478
+ "isp" : "Verizon Wireless",
479
+ "mobile_country_code" : "310",
480
+ "mobile_network_code" : "004",
481
+ "organization" : "Verizon Wireless"
482
+ }
483
+ }
484
+ },
426
485
  {
427
486
  "::175.16.199.0/120" : {
428
487
  "city" : {
@@ -499,7 +558,7 @@
499
558
  ],
500
559
  "traits" : {
501
560
  "static_ip_score" : 0.63,
502
- "user_type" : "dialup"
561
+ "user_type" : "residential"
503
562
  }
504
563
  }
505
564
  },
@@ -630,7 +689,6 @@
630
689
  },
631
690
  "registered_country" : {
632
691
  "geoname_id" : 2635167,
633
- "is_in_european_union" : true,
634
692
  "iso_code" : "GB",
635
693
  "names" : {
636
694
  "de" : "Vereinigtes Königreich",
@@ -668,6 +726,352 @@
668
726
  }
669
727
  }
670
728
  },
729
+ {
730
+ "2001:480::/64" : {
731
+ "continent" : {
732
+ "code" : "AS",
733
+ "geoname_id" : 6255147,
734
+ "names" : {
735
+ "de" : "Asien",
736
+ "en" : "Asia",
737
+ "es" : "Asia",
738
+ "fr" : "Asie",
739
+ "ja" : "アジア",
740
+ "pt-BR" : "Ásia",
741
+ "ru" : "Азия",
742
+ "zh-CN" : "亚洲"
743
+ }
744
+ },
745
+ "country" : {
746
+ "geoname_id" : 1861060,
747
+ "iso_code" : "JP",
748
+ "names" : {
749
+ "de" : "Japan",
750
+ "en" : "Japan",
751
+ "es" : "Japón",
752
+ "fr" : "Japon",
753
+ "ja" : "日本",
754
+ "pt-BR" : "Japão",
755
+ "ru" : "Япония",
756
+ "zh-CN" : "日本"
757
+ }
758
+ },
759
+ "location" : {
760
+ "accuracy_radius" : 100,
761
+ "latitude" : 35.68536,
762
+ "longitude" : 139.75309,
763
+ "time_zone" : "Asia/Tokyo"
764
+ },
765
+ "registered_country" : {
766
+ "geoname_id" : 1861060,
767
+ "iso_code" : "JP",
768
+ "names" : {
769
+ "de" : "Japan",
770
+ "en" : "Japan",
771
+ "es" : "Japón",
772
+ "fr" : "Japon",
773
+ "ja" : "日本",
774
+ "pt-BR" : "Japão",
775
+ "ru" : "Япония",
776
+ "zh-CN" : "日本"
777
+ }
778
+ }
779
+ }
780
+ },
781
+ {
782
+ "214.1.1.0/24" : {
783
+ "traits": {
784
+ "is_anycast": true
785
+ }
786
+ }
787
+ },
788
+ {
789
+ "214.78.0.0/23" : {
790
+ "city" : {
791
+ "confidence" : 99,
792
+ "geoname_id" : 5391811,
793
+ "names" : {
794
+ "de" : "San Diego",
795
+ "en" : "San Diego",
796
+ "es" : "San Diego",
797
+ "fr" : "San Diego",
798
+ "ja" : "サンディエゴ",
799
+ "pt-BR" : "San Diego",
800
+ "ru" : "Сан-Диего"
801
+ }
802
+ },
803
+ "continent" : {
804
+ "code" : "NA",
805
+ "geoname_id" : 6255149,
806
+ "names" : {
807
+ "de" : "Nordamerika",
808
+ "en" : "North America",
809
+ "es" : "Norteamérica",
810
+ "fr" : "Amérique du Nord",
811
+ "ja" : "北アメリカ",
812
+ "pt-BR" : "América do Norte",
813
+ "ru" : "Северная Америка",
814
+ "zh-CN" : "北美洲"
815
+ }
816
+ },
817
+ "country" : {
818
+ "confidence" : 99,
819
+ "geoname_id" : 6252001,
820
+ "iso_code" : "US",
821
+ "names" : {
822
+ "de" : "Vereinigte Staaten",
823
+ "en" : "United States",
824
+ "es" : "Estados Unidos",
825
+ "fr" : "États Unis",
826
+ "ja" : "アメリカ",
827
+ "pt-BR" : "EUA",
828
+ "ru" : "США",
829
+ "zh-CN" : "美国"
830
+ }
831
+ },
832
+ "location" : {
833
+ "accuracy_radius" : 10,
834
+ "latitude" : 32.7449,
835
+ "longitude" : -117.165,
836
+ "metro_code" : 825,
837
+ "time_zone" : "America/Los_Angeles"
838
+ },
839
+ "postal" : {
840
+ "code" : "92103",
841
+ "confidence" : 90
842
+ },
843
+ "registered_country" : {
844
+ "geoname_id" : 6252001,
845
+ "iso_code" : "US",
846
+ "names" : {
847
+ "de" : "Vereinigte Staaten",
848
+ "en" : "United States",
849
+ "es" : "Estados Unidos",
850
+ "fr" : "États Unis",
851
+ "ja" : "アメリカ",
852
+ "pt-BR" : "EUA",
853
+ "ru" : "США",
854
+ "zh-CN" : "美国"
855
+ }
856
+ },
857
+ "subdivisions" : [
858
+ {
859
+ "confidence" : 99,
860
+ "geoname_id" : 5332921,
861
+ "iso_code" : "CA",
862
+ "names" : {
863
+ "de" : "Kalifornien",
864
+ "en" : "California",
865
+ "es" : "California",
866
+ "fr" : "Californie",
867
+ "ja" : "カリフォルニア州",
868
+ "pt-BR" : "Califórnia",
869
+ "ru" : "Калифорния",
870
+ "zh-CN" : "加州"
871
+ }
872
+ }
873
+ ],
874
+ "traits" : {
875
+ "autonomous_system_number" : 5972,
876
+ "autonomous_system_organization" : "DNIC-ASBLK-05800-06055",
877
+ "connection_type" : "Cable/DSL",
878
+ "domain" : "health.mil",
879
+ "isp" : "US Air Force",
880
+ "organization" : "US Department of Defense",
881
+ "user_type" : "military"
882
+ }
883
+ }
884
+ },
885
+ {
886
+ "214.78.120.0/22" : {
887
+ "city" : {
888
+ "geoname_id" : 5391811,
889
+ "names" : {
890
+ "de" : "San Diego",
891
+ "en" : "San Diego",
892
+ "es" : "San Diego",
893
+ "fr" : "San Diego",
894
+ "ja" : "サンディエゴ",
895
+ "pt-BR" : "San Diego",
896
+ "ru" : "Сан-Диего"
897
+ }
898
+ },
899
+ "continent" : {
900
+ "code" : "NA",
901
+ "geoname_id" : 6255149,
902
+ "names" : {
903
+ "de" : "Nordamerika",
904
+ "en" : "North America",
905
+ "es" : "Norteamérica",
906
+ "fr" : "Amérique du Nord",
907
+ "ja" : "北アメリカ",
908
+ "pt-BR" : "América do Norte",
909
+ "ru" : "Северная Америка",
910
+ "zh-CN" : "北美洲"
911
+ }
912
+ },
913
+ "country" : {
914
+ "geoname_id" : 6252001,
915
+ "iso_code" : "US",
916
+ "names" : {
917
+ "de" : "Vereinigte Staaten",
918
+ "en" : "United States",
919
+ "es" : "Estados Unidos",
920
+ "fr" : "États Unis",
921
+ "ja" : "アメリカ",
922
+ "pt-BR" : "EUA",
923
+ "ru" : "США",
924
+ "zh-CN" : "美国"
925
+ }
926
+ },
927
+ "location" : {
928
+ "accuracy_radius" : 100,
929
+ "latitude" : 32.7405,
930
+ "longitude" : -117.0935,
931
+ "metro_code" : 825,
932
+ "time_zone" : "America/Los_Angeles"
933
+ },
934
+ "postal" : {
935
+ "code" : "92105"
936
+ },
937
+ "registered_country" : {
938
+ "geoname_id" : 6252001,
939
+ "iso_code" : "US",
940
+ "names" : {
941
+ "de" : "Vereinigte Staaten",
942
+ "en" : "United States",
943
+ "es" : "Estados Unidos",
944
+ "fr" : "États Unis",
945
+ "ja" : "アメリカ",
946
+ "pt-BR" : "EUA",
947
+ "ru" : "США",
948
+ "zh-CN" : "美国"
949
+ }
950
+ },
951
+ "subdivisions" : [
952
+ {
953
+ "geoname_id" : 5332921,
954
+ "iso_code" : "CA",
955
+ "names" : {
956
+ "de" : "Kalifornien",
957
+ "en" : "California",
958
+ "es" : "California",
959
+ "fr" : "Californie",
960
+ "ja" : "カリフォルニア州",
961
+ "pt-BR" : "Califórnia",
962
+ "ru" : "Калифорния",
963
+ "zh-CN" : "加州"
964
+ }
965
+ }
966
+ ],
967
+ "traits" : {
968
+ "autonomous_system_number" : 14593,
969
+ "autonomous_system_organization" : "SPACEX-STARLINK",
970
+ "connection_type" : "Satellite",
971
+ "domain" : "starlinkisp.net",
972
+ "isp" : "Starlink",
973
+ "organization" : "Starlink",
974
+ "user_type" : "residential"
975
+ }
976
+ }
977
+ },
978
+ {
979
+ "2001:480:10::/49" : {
980
+ "city" : {
981
+ "confidence" : 40,
982
+ "geoname_id" : 5391811,
983
+ "names" : {
984
+ "de" : "San Diego",
985
+ "en" : "San Diego",
986
+ "es" : "San Diego",
987
+ "fr" : "San Diego",
988
+ "ja" : "サンディエゴ",
989
+ "pt-BR" : "San Diego",
990
+ "ru" : "Сан-Диего"
991
+ }
992
+ },
993
+ "continent" : {
994
+ "code" : "NA",
995
+ "geoname_id" : 6255149,
996
+ "names" : {
997
+ "de" : "Nordamerika",
998
+ "en" : "North America",
999
+ "es" : "Norteamérica",
1000
+ "fr" : "Amérique du Nord",
1001
+ "ja" : "北アメリカ",
1002
+ "pt-BR" : "América do Norte",
1003
+ "ru" : "Северная Америка",
1004
+ "zh-CN" : "北美洲"
1005
+ }
1006
+ },
1007
+ "country" : {
1008
+ "confidence" : 99,
1009
+ "geoname_id" : 6252001,
1010
+ "iso_code" : "US",
1011
+ "names" : {
1012
+ "de" : "Vereinigte Staaten",
1013
+ "en" : "United States",
1014
+ "es" : "Estados Unidos",
1015
+ "fr" : "États Unis",
1016
+ "ja" : "アメリカ",
1017
+ "pt-BR" : "EUA",
1018
+ "ru" : "США",
1019
+ "zh-CN" : "美国"
1020
+ }
1021
+ },
1022
+ "location" : {
1023
+ "accuracy_radius" : 20,
1024
+ "latitude" : 32.7203,
1025
+ "longitude" : -117.1552,
1026
+ "metro_code" : 825,
1027
+ "time_zone" : "America/Los_Angeles"
1028
+ },
1029
+ "postal" : {
1030
+ "code" : "92101",
1031
+ "confidence" : 1
1032
+ },
1033
+ "registered_country" : {
1034
+ "geoname_id" : 6252001,
1035
+ "iso_code" : "US",
1036
+ "names" : {
1037
+ "de" : "Vereinigte Staaten",
1038
+ "en" : "United States",
1039
+ "es" : "Estados Unidos",
1040
+ "fr" : "États Unis",
1041
+ "ja" : "アメリカ",
1042
+ "pt-BR" : "EUA",
1043
+ "ru" : "США",
1044
+ "zh-CN" : "美国"
1045
+ }
1046
+ },
1047
+ "subdivisions" : [
1048
+ {
1049
+ "confidence" : 70,
1050
+ "geoname_id" : 5332921,
1051
+ "iso_code" : "CA",
1052
+ "names" : {
1053
+ "de" : "Kalifornien",
1054
+ "en" : "California",
1055
+ "es" : "California",
1056
+ "fr" : "Californie",
1057
+ "ja" : "カリフォルニア州",
1058
+ "pt-BR" : "Califórnia",
1059
+ "ru" : "Калифорния",
1060
+ "zh-CN" : "加州"
1061
+ }
1062
+ }
1063
+ ],
1064
+ "traits" : {
1065
+ "autonomous_system_number" : 22,
1066
+ "autonomous_system_organization" : "DNIC-AS-00022",
1067
+ "connection_type" : "Cable/DSL",
1068
+ "domain" : "navy.mil",
1069
+ "isp" : "US Department of Defense",
1070
+ "organization" : "DNIC",
1071
+ "user_type" : "military"
1072
+ }
1073
+ }
1074
+ },
671
1075
  {
672
1076
  "::212.47.235.81/128" : {
673
1077
  "traits" : {
@@ -8769,6 +8769,16 @@
8769
8769
  "organization" : "Fibrestream Limited"
8770
8770
  }
8771
8771
  },
8772
+ {
8773
+ "::149.101.100.0/124" : {
8774
+ "autonomous_system_number" : 6167,
8775
+ "autonomous_system_organization" : "CELLCO-PART",
8776
+ "isp" : "Verizon Wireless",
8777
+ "mobile_country_code" : "310",
8778
+ "mobile_network_code" : "004",
8779
+ "organization" : "Verizon Wireless"
8780
+ }
8781
+ },
8772
8782
  {
8773
8783
  "::154.50.194.0/119" : {
8774
8784
  "organization" : "Wireless Connect Ltd."