maxmind-geoip2 1.1.0 → 1.3.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.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +22 -0
  3. data/Gemfile.lock +114 -0
  4. data/README.dev.md +1 -1
  5. data/README.md +26 -6
  6. data/Rakefile +1 -0
  7. data/lib/maxmind/geoip2/client.rb +18 -9
  8. data/lib/maxmind/geoip2/model/anonymous_plus.rb +46 -0
  9. data/lib/maxmind/geoip2/model/city.rb +5 -6
  10. data/lib/maxmind/geoip2/model/connection_type.rb +3 -2
  11. data/lib/maxmind/geoip2/model/enterprise.rb +2 -3
  12. data/lib/maxmind/geoip2/model/insights.rb +3 -5
  13. data/lib/maxmind/geoip2/reader.rb +26 -1
  14. data/lib/maxmind/geoip2/record/location.rb +3 -3
  15. data/lib/maxmind/geoip2/record/traits.rb +40 -28
  16. data/lib/maxmind/geoip2/version.rb +8 -0
  17. data/maxmind-geoip2.gemspec +11 -6
  18. data/test/data/LICENSE-APACHE +202 -0
  19. data/test/data/LICENSE-MIT +17 -0
  20. data/test/data/MaxMind-DB-spec.md +1 -2
  21. data/test/data/README.md +8 -1
  22. data/test/data/cmd/write-test-data/main.go +68 -0
  23. data/test/data/go.mod +13 -0
  24. data/test/data/go.sum +16 -0
  25. data/test/data/pkg/writer/decoder.go +178 -0
  26. data/test/data/pkg/writer/geoip2.go +184 -0
  27. data/test/data/pkg/writer/ip.go +39 -0
  28. data/test/data/pkg/writer/maxmind.go +246 -0
  29. data/test/data/pkg/writer/nestedstructures.go +73 -0
  30. data/test/data/pkg/writer/writer.go +61 -0
  31. data/test/data/source-data/GeoIP-Anonymous-Plus-Test.json +175 -0
  32. data/test/data/source-data/GeoIP2-Anonymous-IP-Test.json +6 -0
  33. data/test/data/source-data/GeoIP2-City-Test.json +392 -5
  34. data/test/data/source-data/GeoIP2-Connection-Type-Test.json +15 -10
  35. data/test/data/source-data/GeoIP2-Country-Test.json +99 -25
  36. data/test/data/source-data/GeoIP2-Domain-Test.json +5 -0
  37. data/test/data/source-data/GeoIP2-Enterprise-Test.json +371 -6
  38. data/test/data/source-data/GeoIP2-IP-Risk-Test.json +31 -0
  39. data/test/data/source-data/GeoIP2-Precision-Enterprise-Sandbox-Test.json +296 -0
  40. data/test/data/source-data/GeoIP2-Precision-Enterprise-Test.json +1159 -175
  41. data/test/data/source-data/GeoIP2-Static-IP-Score-Test.json +15 -0
  42. data/test/data/source-data/GeoIP2-User-Count-Test.json +18 -0
  43. data/test/data/source-data/GeoLite2-City-Test.json +168 -3
  44. data/test/data/source-data/GeoLite2-Country-Test.json +92 -3
  45. data/test/data/test-data/GeoIP-Anonymous-Plus-Test.mmdb +0 -0
  46. data/test/data/test-data/GeoIP2-Anonymous-IP-Test.mmdb +0 -0
  47. data/test/data/test-data/GeoIP2-City-Test-Broken-Double-Format.mmdb +0 -0
  48. data/test/data/test-data/GeoIP2-City-Test-Invalid-Node-Count.mmdb +0 -0
  49. data/test/data/test-data/GeoIP2-City-Test.mmdb +0 -0
  50. data/test/data/test-data/GeoIP2-Connection-Type-Test.mmdb +0 -0
  51. data/test/data/test-data/GeoIP2-Country-Test.mmdb +0 -0
  52. data/test/data/test-data/GeoIP2-DensityIncome-Test.mmdb +0 -0
  53. data/test/data/test-data/GeoIP2-Domain-Test.mmdb +0 -0
  54. data/test/data/test-data/GeoIP2-Enterprise-Test.mmdb +0 -0
  55. data/test/data/test-data/GeoIP2-IP-Risk-Test.mmdb +0 -0
  56. data/test/data/test-data/GeoIP2-ISP-Test.mmdb +0 -0
  57. data/test/data/test-data/GeoIP2-Precision-Enterprise-Test.mmdb +0 -0
  58. data/test/data/test-data/GeoIP2-Static-IP-Score-Test.mmdb +0 -0
  59. data/test/data/test-data/GeoIP2-User-Count-Test.mmdb +0 -0
  60. data/test/data/test-data/GeoLite2-ASN-Test.mmdb +0 -0
  61. data/test/data/test-data/GeoLite2-City-Test.mmdb +0 -0
  62. data/test/data/test-data/GeoLite2-Country-Test.mmdb +0 -0
  63. data/test/data/test-data/MaxMind-DB-no-ipv4-search-tree.mmdb +0 -0
  64. data/test/data/test-data/MaxMind-DB-string-value-entries.mmdb +0 -0
  65. data/test/data/test-data/MaxMind-DB-test-broken-pointers-24.mmdb +0 -0
  66. data/test/data/test-data/MaxMind-DB-test-broken-search-tree-24.mmdb +0 -0
  67. data/test/data/test-data/MaxMind-DB-test-decoder.mmdb +0 -0
  68. data/test/data/test-data/MaxMind-DB-test-ipv4-24.mmdb +0 -0
  69. data/test/data/test-data/MaxMind-DB-test-ipv4-28.mmdb +0 -0
  70. data/test/data/test-data/MaxMind-DB-test-ipv4-32.mmdb +0 -0
  71. data/test/data/test-data/MaxMind-DB-test-ipv6-24.mmdb +0 -0
  72. data/test/data/test-data/MaxMind-DB-test-ipv6-28.mmdb +0 -0
  73. data/test/data/test-data/MaxMind-DB-test-ipv6-32.mmdb +0 -0
  74. data/test/data/test-data/MaxMind-DB-test-metadata-pointers.mmdb +0 -0
  75. data/test/data/test-data/MaxMind-DB-test-mixed-24.mmdb +0 -0
  76. data/test/data/test-data/MaxMind-DB-test-mixed-28.mmdb +0 -0
  77. data/test/data/test-data/MaxMind-DB-test-mixed-32.mmdb +0 -0
  78. data/test/data/test-data/MaxMind-DB-test-nested.mmdb +0 -0
  79. data/test/data/test-data/MaxMind-DB-test-pointer-decoder.mmdb +0 -0
  80. data/test/data/test-data/README.md +28 -12
  81. data/test/test_client.rb +18 -2
  82. data/test/test_reader.rb +42 -1
  83. metadata +25 -13
  84. data/test/data/LICENSE +0 -4
  85. data/test/data/perltidyrc +0 -12
  86. data/test/data/source-data/README +0 -15
  87. data/test/data/test-data/write-test-data.pl +0 -695
@@ -75,6 +75,7 @@
75
75
  }
76
76
  },
77
77
  {
78
+ "confidence" : 60,
78
79
  "geoname_id" : 3333217,
79
80
  "iso_code" : "WBK",
80
81
  "names" : {
@@ -144,7 +145,6 @@
144
145
  "traits" : {
145
146
  "autonomous_system_number" : 35908,
146
147
  "domain" : "shoesfin.NET",
147
- "is_anonymous_proxy" : true,
148
148
  "isp" : "Loud Packet",
149
149
  "organization" : "zudoarichikito_",
150
150
  "static_ip_score" : 0.34,
@@ -237,9 +237,7 @@
237
237
  "autonomous_system_organization" : "FairPoint Communications",
238
238
  "connection_type" : "Cable/DSL",
239
239
  "domain" : "frpt.net",
240
- "is_anonymous_proxy" : true,
241
240
  "is_legitimate_proxy" : true,
242
- "is_satellite_provider" : true,
243
241
  "isp" : "Fairpoint Communications",
244
242
  "organization" : "Fairpoint Communications",
245
243
  "static_ip_score" : 0.34,
@@ -558,7 +556,7 @@
558
556
  ],
559
557
  "traits" : {
560
558
  "static_ip_score" : 0.63,
561
- "user_type" : "dialup"
559
+ "user_type" : "residential"
562
560
  }
563
561
  }
564
562
  },
@@ -726,10 +724,355 @@
726
724
  }
727
725
  }
728
726
  },
727
+ {
728
+ "2001:480::/64" : {
729
+ "continent" : {
730
+ "code" : "AS",
731
+ "geoname_id" : 6255147,
732
+ "names" : {
733
+ "de" : "Asien",
734
+ "en" : "Asia",
735
+ "es" : "Asia",
736
+ "fr" : "Asie",
737
+ "ja" : "アジア",
738
+ "pt-BR" : "Ásia",
739
+ "ru" : "Азия",
740
+ "zh-CN" : "亚洲"
741
+ }
742
+ },
743
+ "country" : {
744
+ "geoname_id" : 1861060,
745
+ "iso_code" : "JP",
746
+ "names" : {
747
+ "de" : "Japan",
748
+ "en" : "Japan",
749
+ "es" : "Japón",
750
+ "fr" : "Japon",
751
+ "ja" : "日本",
752
+ "pt-BR" : "Japão",
753
+ "ru" : "Япония",
754
+ "zh-CN" : "日本"
755
+ }
756
+ },
757
+ "location" : {
758
+ "accuracy_radius" : 100,
759
+ "latitude" : 35.68536,
760
+ "longitude" : 139.75309,
761
+ "time_zone" : "Asia/Tokyo"
762
+ },
763
+ "registered_country" : {
764
+ "geoname_id" : 1861060,
765
+ "iso_code" : "JP",
766
+ "names" : {
767
+ "de" : "Japan",
768
+ "en" : "Japan",
769
+ "es" : "Japón",
770
+ "fr" : "Japon",
771
+ "ja" : "日本",
772
+ "pt-BR" : "Japão",
773
+ "ru" : "Япония",
774
+ "zh-CN" : "日本"
775
+ }
776
+ }
777
+ }
778
+ },
779
+ {
780
+ "214.1.1.0/24" : {
781
+ "traits" : {
782
+ "is_anycast" : true
783
+ }
784
+ }
785
+ },
786
+ {
787
+ "214.78.0.0/23" : {
788
+ "city" : {
789
+ "confidence" : 99,
790
+ "geoname_id" : 5391811,
791
+ "names" : {
792
+ "de" : "San Diego",
793
+ "en" : "San Diego",
794
+ "es" : "San Diego",
795
+ "fr" : "San Diego",
796
+ "ja" : "サンディエゴ",
797
+ "pt-BR" : "San Diego",
798
+ "ru" : "Сан-Диего"
799
+ }
800
+ },
801
+ "continent" : {
802
+ "code" : "NA",
803
+ "geoname_id" : 6255149,
804
+ "names" : {
805
+ "de" : "Nordamerika",
806
+ "en" : "North America",
807
+ "es" : "Norteamérica",
808
+ "fr" : "Amérique du Nord",
809
+ "ja" : "北アメリカ",
810
+ "pt-BR" : "América do Norte",
811
+ "ru" : "Северная Америка",
812
+ "zh-CN" : "北美洲"
813
+ }
814
+ },
815
+ "country" : {
816
+ "confidence" : 99,
817
+ "geoname_id" : 6252001,
818
+ "iso_code" : "US",
819
+ "names" : {
820
+ "de" : "Vereinigte Staaten",
821
+ "en" : "United States",
822
+ "es" : "Estados Unidos",
823
+ "fr" : "États Unis",
824
+ "ja" : "アメリカ",
825
+ "pt-BR" : "EUA",
826
+ "ru" : "США",
827
+ "zh-CN" : "美国"
828
+ }
829
+ },
830
+ "location" : {
831
+ "accuracy_radius" : 10,
832
+ "latitude" : 32.7449,
833
+ "longitude" : -117.165,
834
+ "metro_code" : 825,
835
+ "time_zone" : "America/Los_Angeles"
836
+ },
837
+ "postal" : {
838
+ "code" : "92103",
839
+ "confidence" : 90
840
+ },
841
+ "registered_country" : {
842
+ "geoname_id" : 6252001,
843
+ "iso_code" : "US",
844
+ "names" : {
845
+ "de" : "Vereinigte Staaten",
846
+ "en" : "United States",
847
+ "es" : "Estados Unidos",
848
+ "fr" : "États Unis",
849
+ "ja" : "アメリカ",
850
+ "pt-BR" : "EUA",
851
+ "ru" : "США",
852
+ "zh-CN" : "美国"
853
+ }
854
+ },
855
+ "subdivisions" : [
856
+ {
857
+ "confidence" : 99,
858
+ "geoname_id" : 5332921,
859
+ "iso_code" : "CA",
860
+ "names" : {
861
+ "de" : "Kalifornien",
862
+ "en" : "California",
863
+ "es" : "California",
864
+ "fr" : "Californie",
865
+ "ja" : "カリフォルニア州",
866
+ "pt-BR" : "Califórnia",
867
+ "ru" : "Калифорния",
868
+ "zh-CN" : "加州"
869
+ }
870
+ }
871
+ ],
872
+ "traits" : {
873
+ "autonomous_system_number" : 5972,
874
+ "autonomous_system_organization" : "DNIC-ASBLK-05800-06055",
875
+ "connection_type" : "Cable/DSL",
876
+ "domain" : "health.mil",
877
+ "isp" : "US Air Force",
878
+ "organization" : "US Department of Defense",
879
+ "user_type" : "military"
880
+ }
881
+ }
882
+ },
883
+ {
884
+ "214.78.120.0/22" : {
885
+ "city" : {
886
+ "geoname_id" : 5391811,
887
+ "names" : {
888
+ "de" : "San Diego",
889
+ "en" : "San Diego",
890
+ "es" : "San Diego",
891
+ "fr" : "San Diego",
892
+ "ja" : "サンディエゴ",
893
+ "pt-BR" : "San Diego",
894
+ "ru" : "Сан-Диего"
895
+ }
896
+ },
897
+ "continent" : {
898
+ "code" : "NA",
899
+ "geoname_id" : 6255149,
900
+ "names" : {
901
+ "de" : "Nordamerika",
902
+ "en" : "North America",
903
+ "es" : "Norteamérica",
904
+ "fr" : "Amérique du Nord",
905
+ "ja" : "北アメリカ",
906
+ "pt-BR" : "América do Norte",
907
+ "ru" : "Северная Америка",
908
+ "zh-CN" : "北美洲"
909
+ }
910
+ },
911
+ "country" : {
912
+ "geoname_id" : 6252001,
913
+ "iso_code" : "US",
914
+ "names" : {
915
+ "de" : "Vereinigte Staaten",
916
+ "en" : "United States",
917
+ "es" : "Estados Unidos",
918
+ "fr" : "États Unis",
919
+ "ja" : "アメリカ",
920
+ "pt-BR" : "EUA",
921
+ "ru" : "США",
922
+ "zh-CN" : "美国"
923
+ }
924
+ },
925
+ "location" : {
926
+ "accuracy_radius" : 100,
927
+ "latitude" : 32.7405,
928
+ "longitude" : -117.0935,
929
+ "metro_code" : 825,
930
+ "time_zone" : "America/Los_Angeles"
931
+ },
932
+ "postal" : {
933
+ "code" : "92105"
934
+ },
935
+ "registered_country" : {
936
+ "geoname_id" : 6252001,
937
+ "iso_code" : "US",
938
+ "names" : {
939
+ "de" : "Vereinigte Staaten",
940
+ "en" : "United States",
941
+ "es" : "Estados Unidos",
942
+ "fr" : "États Unis",
943
+ "ja" : "アメリカ",
944
+ "pt-BR" : "EUA",
945
+ "ru" : "США",
946
+ "zh-CN" : "美国"
947
+ }
948
+ },
949
+ "subdivisions" : [
950
+ {
951
+ "geoname_id" : 5332921,
952
+ "iso_code" : "CA",
953
+ "names" : {
954
+ "de" : "Kalifornien",
955
+ "en" : "California",
956
+ "es" : "California",
957
+ "fr" : "Californie",
958
+ "ja" : "カリフォルニア州",
959
+ "pt-BR" : "Califórnia",
960
+ "ru" : "Калифорния",
961
+ "zh-CN" : "加州"
962
+ }
963
+ }
964
+ ],
965
+ "traits" : {
966
+ "autonomous_system_number" : 14593,
967
+ "autonomous_system_organization" : "SPACEX-STARLINK",
968
+ "connection_type" : "Satellite",
969
+ "domain" : "starlinkisp.net",
970
+ "isp" : "Starlink",
971
+ "organization" : "Starlink",
972
+ "user_type" : "residential"
973
+ }
974
+ }
975
+ },
976
+ {
977
+ "2001:480:10::/49" : {
978
+ "city" : {
979
+ "confidence" : 40,
980
+ "geoname_id" : 5391811,
981
+ "names" : {
982
+ "de" : "San Diego",
983
+ "en" : "San Diego",
984
+ "es" : "San Diego",
985
+ "fr" : "San Diego",
986
+ "ja" : "サンディエゴ",
987
+ "pt-BR" : "San Diego",
988
+ "ru" : "Сан-Диего"
989
+ }
990
+ },
991
+ "continent" : {
992
+ "code" : "NA",
993
+ "geoname_id" : 6255149,
994
+ "names" : {
995
+ "de" : "Nordamerika",
996
+ "en" : "North America",
997
+ "es" : "Norteamérica",
998
+ "fr" : "Amérique du Nord",
999
+ "ja" : "北アメリカ",
1000
+ "pt-BR" : "América do Norte",
1001
+ "ru" : "Северная Америка",
1002
+ "zh-CN" : "北美洲"
1003
+ }
1004
+ },
1005
+ "country" : {
1006
+ "confidence" : 99,
1007
+ "geoname_id" : 6252001,
1008
+ "iso_code" : "US",
1009
+ "names" : {
1010
+ "de" : "Vereinigte Staaten",
1011
+ "en" : "United States",
1012
+ "es" : "Estados Unidos",
1013
+ "fr" : "États Unis",
1014
+ "ja" : "アメリカ",
1015
+ "pt-BR" : "EUA",
1016
+ "ru" : "США",
1017
+ "zh-CN" : "美国"
1018
+ }
1019
+ },
1020
+ "location" : {
1021
+ "accuracy_radius" : 20,
1022
+ "latitude" : 32.7203,
1023
+ "longitude" : -117.1552,
1024
+ "metro_code" : 825,
1025
+ "time_zone" : "America/Los_Angeles"
1026
+ },
1027
+ "postal" : {
1028
+ "code" : "92101",
1029
+ "confidence" : 1
1030
+ },
1031
+ "registered_country" : {
1032
+ "geoname_id" : 6252001,
1033
+ "iso_code" : "US",
1034
+ "names" : {
1035
+ "de" : "Vereinigte Staaten",
1036
+ "en" : "United States",
1037
+ "es" : "Estados Unidos",
1038
+ "fr" : "États Unis",
1039
+ "ja" : "アメリカ",
1040
+ "pt-BR" : "EUA",
1041
+ "ru" : "США",
1042
+ "zh-CN" : "美国"
1043
+ }
1044
+ },
1045
+ "subdivisions" : [
1046
+ {
1047
+ "confidence" : 70,
1048
+ "geoname_id" : 5332921,
1049
+ "iso_code" : "CA",
1050
+ "names" : {
1051
+ "de" : "Kalifornien",
1052
+ "en" : "California",
1053
+ "es" : "California",
1054
+ "fr" : "Californie",
1055
+ "ja" : "カリフォルニア州",
1056
+ "pt-BR" : "Califórnia",
1057
+ "ru" : "Калифорния",
1058
+ "zh-CN" : "加州"
1059
+ }
1060
+ }
1061
+ ],
1062
+ "traits" : {
1063
+ "autonomous_system_number" : 22,
1064
+ "autonomous_system_organization" : "DNIC-AS-00022",
1065
+ "connection_type" : "Cable/DSL",
1066
+ "domain" : "navy.mil",
1067
+ "isp" : "US Department of Defense",
1068
+ "organization" : "DNIC",
1069
+ "user_type" : "military"
1070
+ }
1071
+ }
1072
+ },
729
1073
  {
730
1074
  "::212.47.235.81/128" : {
731
1075
  "traits" : {
732
- "is_anonymous_proxy" : true,
733
1076
  "static_ip_score" : 1.47
734
1077
  }
735
1078
  }
@@ -737,9 +1080,31 @@
737
1080
  {
738
1081
  "::212.47.235.82/128" : {
739
1082
  "traits" : {
740
- "is_satellite_provider" : true,
741
1083
  "static_ip_score" : 1.47
742
1084
  }
743
1085
  }
1086
+ },
1087
+ {
1088
+ "214.214.214.216/32" : {
1089
+ "traits" : {
1090
+ "static_ip_score" : 0.4,
1091
+ "user_type" : "traveler"
1092
+ }
1093
+ }
1094
+ },
1095
+ {
1096
+ "214.214.214.220/32" : {
1097
+ "traits" : {
1098
+ "static_ip_score" : 0.4,
1099
+ "user_type" : "hosting"
1100
+ }
1101
+ }
1102
+ },
1103
+ {
1104
+ "214.214.214.221/32" : {
1105
+ "traits" : {
1106
+ "user_type" : "content_delivery_network"
1107
+ }
1108
+ }
744
1109
  }
745
1110
  ]
@@ -0,0 +1,31 @@
1
+ [
2
+ {
3
+ "::214.2.3.0/126" : {
4
+ "ip_risk" : 25,
5
+ "is_anonymous" : true,
6
+ "is_anonymous_vpn" : true
7
+ }
8
+ },
9
+ {
10
+ "::214.2.3.4/128" : {
11
+ "ip_risk" : 50,
12
+ "is_anonymous" : true,
13
+ "is_anonymous_vpn" : true,
14
+ "is_tor_exit_node" : true
15
+ }
16
+ },
17
+ {
18
+ "::214.2.3.5/128" : {
19
+ "ip_risk" : 90,
20
+ "is_anonymous" : true,
21
+ "is_anonymous_vpn" : true,
22
+ "is_residential_proxy" : true,
23
+ "is_tor_exit_node" : true
24
+ }
25
+ },
26
+ {
27
+ "::214.2.3.6/128" : {
28
+ "ip_risk" : 85
29
+ }
30
+ }
31
+ ]