maxmind-db 1.3.2 → 1.4.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 (76) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/Gemfile.lock +31 -17
  4. data/README.md +2 -2
  5. data/Rakefile +1 -2
  6. data/maxmind-db.gemspec +6 -3
  7. metadata +46 -73
  8. data/test/data/LICENSE +0 -4
  9. data/test/data/MaxMind-DB-spec.md +0 -574
  10. data/test/data/README.md +0 -4
  11. data/test/data/bad-data/README.md +0 -7
  12. data/test/data/bad-data/libmaxminddb/libmaxminddb-offset-integer-overflow.mmdb +0 -0
  13. data/test/data/bad-data/maxminddb-golang/cyclic-data-structure.mmdb +0 -0
  14. data/test/data/bad-data/maxminddb-golang/invalid-bytes-length.mmdb +0 -1
  15. data/test/data/bad-data/maxminddb-golang/invalid-data-record-offset.mmdb +0 -0
  16. data/test/data/bad-data/maxminddb-golang/invalid-map-key-length.mmdb +0 -0
  17. data/test/data/bad-data/maxminddb-golang/invalid-string-length.mmdb +0 -1
  18. data/test/data/bad-data/maxminddb-golang/metadata-is-an-uint128.mmdb +0 -1
  19. data/test/data/bad-data/maxminddb-golang/unexpected-bytes.mmdb +0 -0
  20. data/test/data/bad-data/maxminddb-python/bad-unicode-in-map-key.mmdb +0 -0
  21. data/test/data/perltidyrc +0 -12
  22. data/test/data/source-data/GeoIP2-Anonymous-IP-Test.json +0 -49
  23. data/test/data/source-data/GeoIP2-City-Test.json +0 -12885
  24. data/test/data/source-data/GeoIP2-Connection-Type-Test.json +0 -122
  25. data/test/data/source-data/GeoIP2-Country-Test.json +0 -15904
  26. data/test/data/source-data/GeoIP2-DensityIncome-Test.json +0 -14
  27. data/test/data/source-data/GeoIP2-Domain-Test.json +0 -452
  28. data/test/data/source-data/GeoIP2-Enterprise-Test.json +0 -745
  29. data/test/data/source-data/GeoIP2-ISP-Test.json +0 -12605
  30. data/test/data/source-data/GeoIP2-Precision-Enterprise-Test.json +0 -2205
  31. data/test/data/source-data/GeoIP2-Static-IP-Score-Test.json +0 -2132
  32. data/test/data/source-data/GeoIP2-User-Count-Test.json +0 -2837
  33. data/test/data/source-data/GeoLite2-ASN-Test.json +0 -4120
  34. data/test/data/source-data/GeoLite2-City-Test.json +0 -12804
  35. data/test/data/source-data/GeoLite2-Country-Test.json +0 -11280
  36. data/test/data/source-data/README +0 -15
  37. data/test/data/test-data/GeoIP2-Anonymous-IP-Test.mmdb +0 -0
  38. data/test/data/test-data/GeoIP2-City-Test-Broken-Double-Format.mmdb +0 -0
  39. data/test/data/test-data/GeoIP2-City-Test-Invalid-Node-Count.mmdb +0 -0
  40. data/test/data/test-data/GeoIP2-City-Test.mmdb +0 -0
  41. data/test/data/test-data/GeoIP2-Connection-Type-Test.mmdb +0 -0
  42. data/test/data/test-data/GeoIP2-Country-Test.mmdb +0 -0
  43. data/test/data/test-data/GeoIP2-DensityIncome-Test.mmdb +0 -0
  44. data/test/data/test-data/GeoIP2-Domain-Test.mmdb +0 -0
  45. data/test/data/test-data/GeoIP2-Enterprise-Test.mmdb +0 -0
  46. data/test/data/test-data/GeoIP2-ISP-Test.mmdb +0 -0
  47. data/test/data/test-data/GeoIP2-Precision-Enterprise-Test.mmdb +0 -0
  48. data/test/data/test-data/GeoIP2-Static-IP-Score-Test.mmdb +0 -0
  49. data/test/data/test-data/GeoIP2-User-Count-Test.mmdb +0 -0
  50. data/test/data/test-data/GeoLite2-ASN-Test.mmdb +0 -0
  51. data/test/data/test-data/GeoLite2-City-Test.mmdb +0 -0
  52. data/test/data/test-data/GeoLite2-Country-Test.mmdb +0 -0
  53. data/test/data/test-data/MaxMind-DB-no-ipv4-search-tree.mmdb +0 -0
  54. data/test/data/test-data/MaxMind-DB-string-value-entries.mmdb +0 -0
  55. data/test/data/test-data/MaxMind-DB-test-broken-pointers-24.mmdb +0 -0
  56. data/test/data/test-data/MaxMind-DB-test-broken-search-tree-24.mmdb +0 -0
  57. data/test/data/test-data/MaxMind-DB-test-decoder.mmdb +0 -0
  58. data/test/data/test-data/MaxMind-DB-test-ipv4-24.mmdb +0 -0
  59. data/test/data/test-data/MaxMind-DB-test-ipv4-28.mmdb +0 -0
  60. data/test/data/test-data/MaxMind-DB-test-ipv4-32.mmdb +0 -0
  61. data/test/data/test-data/MaxMind-DB-test-ipv6-24.mmdb +0 -0
  62. data/test/data/test-data/MaxMind-DB-test-ipv6-28.mmdb +0 -0
  63. data/test/data/test-data/MaxMind-DB-test-ipv6-32.mmdb +0 -0
  64. data/test/data/test-data/MaxMind-DB-test-metadata-pointers.mmdb +0 -0
  65. data/test/data/test-data/MaxMind-DB-test-mixed-24.mmdb +0 -0
  66. data/test/data/test-data/MaxMind-DB-test-mixed-28.mmdb +0 -0
  67. data/test/data/test-data/MaxMind-DB-test-mixed-32.mmdb +0 -0
  68. data/test/data/test-data/MaxMind-DB-test-nested.mmdb +0 -0
  69. data/test/data/test-data/MaxMind-DB-test-pointer-decoder.mmdb +0 -0
  70. data/test/data/test-data/README.md +0 -26
  71. data/test/data/test-data/maps-with-pointers.raw +0 -0
  72. data/test/data/test-data/write-test-data.pl +0 -695
  73. data/test/data/tidyall.ini +0 -5
  74. data/test/mmdb_util.rb +0 -26
  75. data/test/test_decoder.rb +0 -241
  76. data/test/test_reader.rb +0 -547
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9b642dbfca79a5abf8c5c5ab4a2ceb07051affb7148dd005514d0bc1a9950c3b
4
- data.tar.gz: 6cb14299dec849aef6f054ca39cbf139d3e552ed593960ebfbd72a09a6ce5f27
3
+ metadata.gz: 77f9cd0d89c27c78de29dc99fab391f945d9828b4b5fa84f3deffcee524be975
4
+ data.tar.gz: 8310c429dded70a05039a7e338c59b2d09167ba4d4a68e79233fea67f21abd6e
5
5
  SHA512:
6
- metadata.gz: 232d60717fed7da9d7253edc041316eec8f71782b9fca2e72cdbd5ad5414e7253504d423b3bab105cd87c5fd1c62e6df2fe7b8a2d70ea19f97a5fc5fc493a572
7
- data.tar.gz: c40ce6eec502c4f2f45d8b5036b179b9f498e680771571430228845f0a588a564e3a4adf66193f56440bb8c21940793cba5ee073f3eb444dbe9f303db9f6fe21
6
+ metadata.gz: 20721610296dd6758e18e7c735cb9321a71dcdbce22b30df0203883fd78b6aa02117585bad059a5db86c1f57d22ac4bdb7e2d9bac01391f528f37b27a3103a29
7
+ data.tar.gz: 1f19868cdd79c85a1a654ea8e84bc5ae02c5fd422724fcd0cc2766cee445bb02b6f761bd2f66518fbe4d4839d0e028cb481a13a9e5ab022dbbcb8e464fa6a028
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.4.0 (2025-11-20)
4
+
5
+ * Ruby 3.2+ is now required. If you're using Ruby 3.0 or 3.1, please use
6
+ version 1.3.2 of this gem.
7
+
3
8
  ## 1.3.2 (2025-04-03)
4
9
 
5
10
  * Re-release to fix a release script problem. There are no code changes.
data/Gemfile.lock CHANGED
@@ -1,26 +1,26 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- maxmind-db (1.3.2)
4
+ maxmind-db (1.4.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  ast (2.4.3)
10
- json (2.10.2)
11
- language_server-protocol (3.17.0.4)
10
+ json (2.16.0)
11
+ language_server-protocol (3.17.0.5)
12
12
  lint_roller (1.1.0)
13
- minitest (5.25.5)
14
- parallel (1.26.3)
15
- parser (3.3.7.4)
13
+ minitest (5.26.2)
14
+ parallel (1.27.0)
15
+ parser (3.3.10.0)
16
16
  ast (~> 2.4.1)
17
17
  racc
18
- prism (1.4.0)
18
+ prism (1.6.0)
19
19
  racc (1.8.1)
20
20
  rainbow (3.1.1)
21
- rake (13.2.1)
22
- regexp_parser (2.10.0)
23
- rubocop (1.75.2)
21
+ rake (13.3.1)
22
+ regexp_parser (2.11.3)
23
+ rubocop (1.81.7)
24
24
  json (~> 2.3)
25
25
  language_server-protocol (~> 3.17.0.2)
26
26
  lint_roller (~> 1.1.0)
@@ -28,20 +28,31 @@ GEM
28
28
  parser (>= 3.3.0.2)
29
29
  rainbow (>= 2.2.2, < 4.0)
30
30
  regexp_parser (>= 2.9.3, < 3.0)
31
- rubocop-ast (>= 1.44.0, < 2.0)
31
+ rubocop-ast (>= 1.47.1, < 2.0)
32
32
  ruby-progressbar (~> 1.7)
33
33
  unicode-display_width (>= 2.4.0, < 4.0)
34
- rubocop-ast (1.44.0)
34
+ rubocop-ast (1.48.0)
35
35
  parser (>= 3.3.7.2)
36
36
  prism (~> 1.4)
37
- rubocop-performance (1.25.0)
37
+ rubocop-minitest (0.38.2)
38
38
  lint_roller (~> 1.1)
39
39
  rubocop (>= 1.75.0, < 2.0)
40
40
  rubocop-ast (>= 1.38.0, < 2.0)
41
+ rubocop-performance (1.26.1)
42
+ lint_roller (~> 1.1)
43
+ rubocop (>= 1.75.0, < 2.0)
44
+ rubocop-ast (>= 1.47.1, < 2.0)
45
+ rubocop-rake (0.7.1)
46
+ lint_roller (~> 1.1)
47
+ rubocop (>= 1.72.1)
48
+ rubocop-thread_safety (0.7.3)
49
+ lint_roller (~> 1.1)
50
+ rubocop (~> 1.72, >= 1.72.1)
51
+ rubocop-ast (>= 1.44.0, < 2.0)
41
52
  ruby-progressbar (1.13.0)
42
- unicode-display_width (3.1.4)
43
- unicode-emoji (~> 4.0, >= 4.0.4)
44
- unicode-emoji (4.0.4)
53
+ unicode-display_width (3.2.0)
54
+ unicode-emoji (~> 4.1)
55
+ unicode-emoji (4.1.0)
45
56
 
46
57
  PLATFORMS
47
58
  ruby
@@ -52,7 +63,10 @@ DEPENDENCIES
52
63
  minitest
53
64
  rake
54
65
  rubocop
66
+ rubocop-minitest
55
67
  rubocop-performance
68
+ rubocop-rake
69
+ rubocop-thread_safety
56
70
 
57
71
  BUNDLED WITH
58
- 2.6.2
72
+ 2.6.9
data/README.md CHANGED
@@ -35,7 +35,7 @@ For more information see the
35
35
 
36
36
  ## Requirements
37
37
 
38
- This code requires Ruby version 3.0 or higher.
38
+ This code requires Ruby version 3.2 or higher.
39
39
 
40
40
  ## Contributing
41
41
 
@@ -56,7 +56,7 @@ This library uses [Semantic Versioning](https://semver.org/).
56
56
 
57
57
  ## Copyright and License
58
58
 
59
- This software is Copyright (c) 2018 - 2024 by MaxMind, Inc.
59
+ This software is Copyright (c) 2018 - 2025 by MaxMind, Inc.
60
60
 
61
61
  This is free software, licensed under the [Apache License, Version
62
62
  2.0](LICENSE-APACHE) or the [MIT License](LICENSE-MIT), at your option.
data/Rakefile CHANGED
@@ -11,5 +11,4 @@ end
11
11
  RuboCop::RakeTask.new
12
12
 
13
13
  desc 'Run tests and RuboCop'
14
- task default: :test
15
- task default: :rubocop
14
+ task default: %i[test rubocop]
data/maxmind-db.gemspec CHANGED
@@ -2,10 +2,10 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.authors = ['William Storey']
5
- s.files = Dir['**/*'].difference(Dir['.github/**/*', 'dev-bin/**/*'])
5
+ s.files = Dir['**/*'].difference(Dir['.github/**/*', 'dev-bin/**/*', 'test/**/*'])
6
6
  s.name = 'maxmind-db'
7
7
  s.summary = 'A gem for reading MaxMind DB files.'
8
- s.version = '1.3.2'
8
+ s.version = '1.4.0'
9
9
 
10
10
  s.description = 'A gem for reading MaxMind DB files. MaxMind DB is a binary file format that stores data indexed by IP address subnets (IPv4 or IPv6).'
11
11
  s.email = 'support@maxmind.com'
@@ -19,10 +19,13 @@ Gem::Specification.new do |s|
19
19
  'source_code_uri' => 'https://github.com/maxmind/MaxMind-DB-Reader-ruby',
20
20
  'rubygems_mfa_required' => 'true',
21
21
  }
22
- s.required_ruby_version = '>= 3.0'
22
+ s.required_ruby_version = '>= 3.2'
23
23
 
24
24
  s.add_development_dependency 'minitest'
25
25
  s.add_development_dependency 'rake'
26
26
  s.add_development_dependency 'rubocop'
27
+ s.add_development_dependency 'rubocop-minitest'
27
28
  s.add_development_dependency 'rubocop-performance'
29
+ s.add_development_dependency 'rubocop-rake'
30
+ s.add_development_dependency 'rubocop-thread_safety'
28
31
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: maxmind-db
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Storey
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-04-03 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: minitest
@@ -51,6 +51,20 @@ dependencies:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: rubocop-minitest
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
54
68
  - !ruby/object:Gem::Dependency
55
69
  name: rubocop-performance
56
70
  requirement: !ruby/object:Gem::Requirement
@@ -65,6 +79,34 @@ dependencies:
65
79
  - - ">="
66
80
  - !ruby/object:Gem::Version
67
81
  version: '0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: rubocop-rake
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: rubocop-thread_safety
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
68
110
  description: A gem for reading MaxMind DB files. MaxMind DB is a binary file format
69
111
  that stores data indexed by IP address subnets (IPv4 or IPv6).
70
112
  email: support@maxmind.com
@@ -88,75 +130,6 @@ files:
88
130
  - lib/maxmind/db/memory_reader.rb
89
131
  - lib/maxmind/db/metadata.rb
90
132
  - maxmind-db.gemspec
91
- - test/data/LICENSE
92
- - test/data/MaxMind-DB-spec.md
93
- - test/data/README.md
94
- - test/data/bad-data/README.md
95
- - test/data/bad-data/libmaxminddb/libmaxminddb-offset-integer-overflow.mmdb
96
- - test/data/bad-data/maxminddb-golang/cyclic-data-structure.mmdb
97
- - test/data/bad-data/maxminddb-golang/invalid-bytes-length.mmdb
98
- - test/data/bad-data/maxminddb-golang/invalid-data-record-offset.mmdb
99
- - test/data/bad-data/maxminddb-golang/invalid-map-key-length.mmdb
100
- - test/data/bad-data/maxminddb-golang/invalid-string-length.mmdb
101
- - test/data/bad-data/maxminddb-golang/metadata-is-an-uint128.mmdb
102
- - test/data/bad-data/maxminddb-golang/unexpected-bytes.mmdb
103
- - test/data/bad-data/maxminddb-python/bad-unicode-in-map-key.mmdb
104
- - test/data/perltidyrc
105
- - test/data/source-data/GeoIP2-Anonymous-IP-Test.json
106
- - test/data/source-data/GeoIP2-City-Test.json
107
- - test/data/source-data/GeoIP2-Connection-Type-Test.json
108
- - test/data/source-data/GeoIP2-Country-Test.json
109
- - test/data/source-data/GeoIP2-DensityIncome-Test.json
110
- - test/data/source-data/GeoIP2-Domain-Test.json
111
- - test/data/source-data/GeoIP2-Enterprise-Test.json
112
- - test/data/source-data/GeoIP2-ISP-Test.json
113
- - test/data/source-data/GeoIP2-Precision-Enterprise-Test.json
114
- - test/data/source-data/GeoIP2-Static-IP-Score-Test.json
115
- - test/data/source-data/GeoIP2-User-Count-Test.json
116
- - test/data/source-data/GeoLite2-ASN-Test.json
117
- - test/data/source-data/GeoLite2-City-Test.json
118
- - test/data/source-data/GeoLite2-Country-Test.json
119
- - test/data/source-data/README
120
- - test/data/test-data/GeoIP2-Anonymous-IP-Test.mmdb
121
- - test/data/test-data/GeoIP2-City-Test-Broken-Double-Format.mmdb
122
- - test/data/test-data/GeoIP2-City-Test-Invalid-Node-Count.mmdb
123
- - test/data/test-data/GeoIP2-City-Test.mmdb
124
- - test/data/test-data/GeoIP2-Connection-Type-Test.mmdb
125
- - test/data/test-data/GeoIP2-Country-Test.mmdb
126
- - test/data/test-data/GeoIP2-DensityIncome-Test.mmdb
127
- - test/data/test-data/GeoIP2-Domain-Test.mmdb
128
- - test/data/test-data/GeoIP2-Enterprise-Test.mmdb
129
- - test/data/test-data/GeoIP2-ISP-Test.mmdb
130
- - test/data/test-data/GeoIP2-Precision-Enterprise-Test.mmdb
131
- - test/data/test-data/GeoIP2-Static-IP-Score-Test.mmdb
132
- - test/data/test-data/GeoIP2-User-Count-Test.mmdb
133
- - test/data/test-data/GeoLite2-ASN-Test.mmdb
134
- - test/data/test-data/GeoLite2-City-Test.mmdb
135
- - test/data/test-data/GeoLite2-Country-Test.mmdb
136
- - test/data/test-data/MaxMind-DB-no-ipv4-search-tree.mmdb
137
- - test/data/test-data/MaxMind-DB-string-value-entries.mmdb
138
- - test/data/test-data/MaxMind-DB-test-broken-pointers-24.mmdb
139
- - test/data/test-data/MaxMind-DB-test-broken-search-tree-24.mmdb
140
- - test/data/test-data/MaxMind-DB-test-decoder.mmdb
141
- - test/data/test-data/MaxMind-DB-test-ipv4-24.mmdb
142
- - test/data/test-data/MaxMind-DB-test-ipv4-28.mmdb
143
- - test/data/test-data/MaxMind-DB-test-ipv4-32.mmdb
144
- - test/data/test-data/MaxMind-DB-test-ipv6-24.mmdb
145
- - test/data/test-data/MaxMind-DB-test-ipv6-28.mmdb
146
- - test/data/test-data/MaxMind-DB-test-ipv6-32.mmdb
147
- - test/data/test-data/MaxMind-DB-test-metadata-pointers.mmdb
148
- - test/data/test-data/MaxMind-DB-test-mixed-24.mmdb
149
- - test/data/test-data/MaxMind-DB-test-mixed-28.mmdb
150
- - test/data/test-data/MaxMind-DB-test-mixed-32.mmdb
151
- - test/data/test-data/MaxMind-DB-test-nested.mmdb
152
- - test/data/test-data/MaxMind-DB-test-pointer-decoder.mmdb
153
- - test/data/test-data/README.md
154
- - test/data/test-data/maps-with-pointers.raw
155
- - test/data/test-data/write-test-data.pl
156
- - test/data/tidyall.ini
157
- - test/mmdb_util.rb
158
- - test/test_decoder.rb
159
- - test/test_reader.rb
160
133
  homepage: https://github.com/maxmind/MaxMind-DB-Reader-ruby
161
134
  licenses:
162
135
  - Apache-2.0
@@ -175,14 +148,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
175
148
  requirements:
176
149
  - - ">="
177
150
  - !ruby/object:Gem::Version
178
- version: '3.0'
151
+ version: '3.2'
179
152
  required_rubygems_version: !ruby/object:Gem::Requirement
180
153
  requirements:
181
154
  - - ">="
182
155
  - !ruby/object:Gem::Version
183
156
  version: '0'
184
157
  requirements: []
185
- rubygems_version: 3.6.2
158
+ rubygems_version: 3.6.9
186
159
  specification_version: 4
187
160
  summary: A gem for reading MaxMind DB files.
188
161
  test_files: []
data/test/data/LICENSE DELETED
@@ -1,4 +0,0 @@
1
- This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
2
- Unported License. To view a copy of this license, visit
3
- http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative
4
- Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.