maxmind-db 1.1.0 → 1.1.1

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 +5 -5
  2. data/CHANGELOG.md +5 -0
  3. data/Gemfile +1 -4
  4. data/README.dev.md +6 -2
  5. data/README.md +1 -9
  6. data/lib/maxmind/db.rb +38 -34
  7. data/lib/maxmind/db/decoder.rb +4 -2
  8. data/lib/maxmind/db/errors.rb +1 -1
  9. data/lib/maxmind/db/file_reader.rb +3 -2
  10. data/lib/maxmind/db/memory_reader.rb +4 -4
  11. data/lib/maxmind/db/metadata.rb +28 -2
  12. data/maxmind-db.gemspec +7 -2
  13. data/test/data/LICENSE +4 -0
  14. data/test/data/MaxMind-DB-spec.md +570 -0
  15. data/test/data/MaxMind-DB-test-metadata-pointers.mmdb +0 -0
  16. data/test/data/README.md +4 -0
  17. data/test/data/bad-data/README.md +7 -0
  18. data/test/data/bad-data/libmaxminddb/libmaxminddb-offset-integer-overflow.mmdb +0 -0
  19. data/test/data/bad-data/maxminddb-golang/cyclic-data-structure.mmdb +0 -0
  20. data/test/data/bad-data/maxminddb-golang/invalid-bytes-length.mmdb +1 -0
  21. data/test/data/bad-data/maxminddb-golang/invalid-data-record-offset.mmdb +0 -0
  22. data/test/data/bad-data/maxminddb-golang/invalid-map-key-length.mmdb +0 -0
  23. data/test/data/bad-data/maxminddb-golang/invalid-string-length.mmdb +1 -0
  24. data/test/data/bad-data/maxminddb-golang/metadata-is-an-uint128.mmdb +1 -0
  25. data/test/data/bad-data/maxminddb-golang/unexpected-bytes.mmdb +0 -0
  26. data/test/data/perltidyrc +12 -0
  27. data/test/data/source-data/GeoIP2-Anonymous-IP-Test.json +48 -0
  28. data/test/data/source-data/GeoIP2-City-Test.json +12852 -0
  29. data/test/data/source-data/GeoIP2-Connection-Type-Test.json +102 -0
  30. data/test/data/source-data/GeoIP2-Country-Test.json +15916 -0
  31. data/test/data/source-data/GeoIP2-DensityIncome-Test.json +14 -0
  32. data/test/data/source-data/GeoIP2-Domain-Test.json +452 -0
  33. data/test/data/source-data/GeoIP2-Enterprise-Test.json +673 -0
  34. data/test/data/source-data/GeoIP2-ISP-Test.json +12593 -0
  35. data/test/data/source-data/GeoIP2-Precision-Enterprise-Test.json +2018 -0
  36. data/test/data/source-data/GeoIP2-Static-IP-Score-Test.json +2132 -0
  37. data/test/data/source-data/GeoIP2-User-Count-Test.json +2837 -0
  38. data/test/data/source-data/GeoLite2-ASN-Test.json +37 -0
  39. data/test/data/source-data/README +15 -0
  40. data/test/data/test-data/GeoIP2-Anonymous-IP-Test.mmdb +0 -0
  41. data/test/data/test-data/GeoIP2-City-Test-Broken-Double-Format.mmdb +0 -0
  42. data/test/data/test-data/GeoIP2-City-Test-Invalid-Node-Count.mmdb +0 -0
  43. data/test/data/test-data/GeoIP2-City-Test.mmdb +0 -0
  44. data/test/data/test-data/GeoIP2-Connection-Type-Test.mmdb +0 -0
  45. data/test/data/test-data/GeoIP2-Country-Test.mmdb +0 -0
  46. data/test/data/test-data/GeoIP2-DensityIncome-Test.mmdb +0 -0
  47. data/test/data/test-data/GeoIP2-Domain-Test.mmdb +0 -0
  48. data/test/data/test-data/GeoIP2-Enterprise-Test.mmdb +0 -0
  49. data/test/data/test-data/GeoIP2-ISP-Test.mmdb +0 -0
  50. data/test/data/test-data/GeoIP2-Precision-Enterprise-Test.mmdb +0 -0
  51. data/test/data/test-data/GeoIP2-Static-IP-Score-Test.mmdb +0 -0
  52. data/test/data/test-data/GeoIP2-User-Count-Test.mmdb +0 -0
  53. data/test/data/test-data/GeoLite2-ASN-Test.mmdb +0 -0
  54. data/test/data/test-data/MaxMind-DB-no-ipv4-search-tree.mmdb +0 -0
  55. data/test/data/test-data/MaxMind-DB-string-value-entries.mmdb +0 -0
  56. data/test/data/test-data/MaxMind-DB-test-broken-pointers-24.mmdb +0 -0
  57. data/test/data/test-data/MaxMind-DB-test-broken-search-tree-24.mmdb +0 -0
  58. data/test/data/test-data/MaxMind-DB-test-decoder.mmdb +0 -0
  59. data/test/data/test-data/MaxMind-DB-test-ipv4-24.mmdb +0 -0
  60. data/test/data/test-data/MaxMind-DB-test-ipv4-28.mmdb +0 -0
  61. data/test/data/test-data/MaxMind-DB-test-ipv4-32.mmdb +0 -0
  62. data/test/data/test-data/MaxMind-DB-test-ipv6-24.mmdb +0 -0
  63. data/test/data/test-data/MaxMind-DB-test-ipv6-28.mmdb +0 -0
  64. data/test/data/test-data/MaxMind-DB-test-ipv6-32.mmdb +0 -0
  65. data/test/data/test-data/MaxMind-DB-test-metadata-pointers.mmdb +0 -0
  66. data/test/data/test-data/MaxMind-DB-test-mixed-24.mmdb +0 -0
  67. data/test/data/test-data/MaxMind-DB-test-mixed-28.mmdb +0 -0
  68. data/test/data/test-data/MaxMind-DB-test-mixed-32.mmdb +0 -0
  69. data/test/data/test-data/MaxMind-DB-test-nested.mmdb +0 -0
  70. data/test/data/test-data/README.md +26 -0
  71. data/test/data/test-data/maps-with-pointers.raw +0 -0
  72. data/test/data/test-data/write-test-data.pl +640 -0
  73. data/test/data/tidyall.ini +5 -0
  74. data/test/mmdb_util.rb +1 -1
  75. data/test/test_decoder.rb +1 -1
  76. data/test/test_reader.rb +14 -1
  77. metadata +122 -6
  78. data/Gemfile.lock +0 -34
@@ -0,0 +1,5 @@
1
+ [PerlTidy]
2
+ select = **/*.{pl,pm,t}
3
+
4
+ [JSON]
5
+ select = **/*.json
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class MMDBUtil # :nodoc:
3
+ class MMDBUtil
4
4
  def self.make_metadata_map(record_size)
5
5
  # Map
6
6
  "\xe9".b +
@@ -4,7 +4,7 @@ require 'maxmind/db'
4
4
  require 'minitest/autorun'
5
5
  require 'mmdb_util'
6
6
 
7
- class DecoderTest < Minitest::Test # :nodoc:
7
+ class DecoderTest < Minitest::Test
8
8
  def test_arrays
9
9
  arrays = {
10
10
  "\x00\x04".b => [],
@@ -4,7 +4,7 @@ require 'maxmind/db'
4
4
  require 'minitest/autorun'
5
5
  require 'mmdb_util'
6
6
 
7
- class ReaderTest < Minitest::Test # :nodoc:
7
+ class ReaderTest < Minitest::Test
8
8
  def test_reader
9
9
  modes = [
10
10
  MaxMind::DB::MODE_FILE,
@@ -29,6 +29,19 @@ class ReaderTest < Minitest::Test # :nodoc:
29
29
  end
30
30
  end
31
31
 
32
+ def test_reader_inspect
33
+ modes = [
34
+ MaxMind::DB::MODE_FILE,
35
+ MaxMind::DB::MODE_MEMORY,
36
+ ]
37
+
38
+ modes.each do |mode|
39
+ filename = 'test/data/test-data/MaxMind-DB-test-ipv4-24.mmdb'
40
+ reader = MaxMind::DB.new(filename, mode: mode)
41
+ assert_instance_of(String, reader.inspect)
42
+ end
43
+ end
44
+
32
45
  def test_get_with_prefix_len
33
46
  decoder_record = {
34
47
  'array' => [1, 2, 3],
metadata CHANGED
@@ -1,15 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: maxmind-db
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Storey
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-08 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2020-06-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: minitest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop-performance
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
13
69
  description: A gem for reading MaxMind DB files. MaxMind DB is a binary file format
14
70
  that stores data indexed by IP address subnets (IPv4 or IPv6).
15
71
  email: support@maxmind.com
@@ -19,7 +75,6 @@ extra_rdoc_files: []
19
75
  files:
20
76
  - CHANGELOG.md
21
77
  - Gemfile
22
- - Gemfile.lock
23
78
  - LICENSE-APACHE
24
79
  - LICENSE-MIT
25
80
  - README.dev.md
@@ -33,6 +88,67 @@ files:
33
88
  - lib/maxmind/db/memory_reader.rb
34
89
  - lib/maxmind/db/metadata.rb
35
90
  - maxmind-db.gemspec
91
+ - test/data/LICENSE
92
+ - test/data/MaxMind-DB-spec.md
93
+ - test/data/MaxMind-DB-test-metadata-pointers.mmdb
94
+ - test/data/README.md
95
+ - test/data/bad-data/README.md
96
+ - test/data/bad-data/libmaxminddb/libmaxminddb-offset-integer-overflow.mmdb
97
+ - test/data/bad-data/maxminddb-golang/cyclic-data-structure.mmdb
98
+ - test/data/bad-data/maxminddb-golang/invalid-bytes-length.mmdb
99
+ - test/data/bad-data/maxminddb-golang/invalid-data-record-offset.mmdb
100
+ - test/data/bad-data/maxminddb-golang/invalid-map-key-length.mmdb
101
+ - test/data/bad-data/maxminddb-golang/invalid-string-length.mmdb
102
+ - test/data/bad-data/maxminddb-golang/metadata-is-an-uint128.mmdb
103
+ - test/data/bad-data/maxminddb-golang/unexpected-bytes.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/README
118
+ - test/data/test-data/GeoIP2-Anonymous-IP-Test.mmdb
119
+ - test/data/test-data/GeoIP2-City-Test-Broken-Double-Format.mmdb
120
+ - test/data/test-data/GeoIP2-City-Test-Invalid-Node-Count.mmdb
121
+ - test/data/test-data/GeoIP2-City-Test.mmdb
122
+ - test/data/test-data/GeoIP2-Connection-Type-Test.mmdb
123
+ - test/data/test-data/GeoIP2-Country-Test.mmdb
124
+ - test/data/test-data/GeoIP2-DensityIncome-Test.mmdb
125
+ - test/data/test-data/GeoIP2-Domain-Test.mmdb
126
+ - test/data/test-data/GeoIP2-Enterprise-Test.mmdb
127
+ - test/data/test-data/GeoIP2-ISP-Test.mmdb
128
+ - test/data/test-data/GeoIP2-Precision-Enterprise-Test.mmdb
129
+ - test/data/test-data/GeoIP2-Static-IP-Score-Test.mmdb
130
+ - test/data/test-data/GeoIP2-User-Count-Test.mmdb
131
+ - test/data/test-data/GeoLite2-ASN-Test.mmdb
132
+ - test/data/test-data/MaxMind-DB-no-ipv4-search-tree.mmdb
133
+ - test/data/test-data/MaxMind-DB-string-value-entries.mmdb
134
+ - test/data/test-data/MaxMind-DB-test-broken-pointers-24.mmdb
135
+ - test/data/test-data/MaxMind-DB-test-broken-search-tree-24.mmdb
136
+ - test/data/test-data/MaxMind-DB-test-decoder.mmdb
137
+ - test/data/test-data/MaxMind-DB-test-ipv4-24.mmdb
138
+ - test/data/test-data/MaxMind-DB-test-ipv4-28.mmdb
139
+ - test/data/test-data/MaxMind-DB-test-ipv4-32.mmdb
140
+ - test/data/test-data/MaxMind-DB-test-ipv6-24.mmdb
141
+ - test/data/test-data/MaxMind-DB-test-ipv6-28.mmdb
142
+ - test/data/test-data/MaxMind-DB-test-ipv6-32.mmdb
143
+ - test/data/test-data/MaxMind-DB-test-metadata-pointers.mmdb
144
+ - test/data/test-data/MaxMind-DB-test-mixed-24.mmdb
145
+ - test/data/test-data/MaxMind-DB-test-mixed-28.mmdb
146
+ - test/data/test-data/MaxMind-DB-test-mixed-32.mmdb
147
+ - test/data/test-data/MaxMind-DB-test-nested.mmdb
148
+ - test/data/test-data/README.md
149
+ - test/data/test-data/maps-with-pointers.raw
150
+ - test/data/test-data/write-test-data.pl
151
+ - test/data/tidyall.ini
36
152
  - test/mmdb_util.rb
37
153
  - test/test_decoder.rb
38
154
  - test/test_reader.rb
@@ -43,7 +159,7 @@ licenses:
43
159
  metadata:
44
160
  bug_tracker_uri: https://github.com/maxmind/MaxMind-DB-Reader-ruby/issues
45
161
  changelog_uri: https://github.com/maxmind/MaxMind-DB-Reader-ruby/blob/master/CHANGELOG.md
46
- documentation_uri: https://github.com/maxmind/MaxMind-DB-Reader-ruby
162
+ documentation_uri: https://www.rubydoc.info/gems/maxmind-db
47
163
  homepage_uri: https://github.com/maxmind/MaxMind-DB-Reader-ruby
48
164
  source_code_uri: https://github.com/maxmind/MaxMind-DB-Reader-ruby
49
165
  post_install_message:
@@ -62,7 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
62
178
  version: '0'
63
179
  requirements: []
64
180
  rubyforge_project:
65
- rubygems_version: 2.5.2.1
181
+ rubygems_version: 2.7.6.2
66
182
  signing_key:
67
183
  specification_version: 4
68
184
  summary: A gem for reading MaxMind DB files.
@@ -1,34 +0,0 @@
1
- GEM
2
- remote: https://rubygems.org/
3
- specs:
4
- ast (2.4.0)
5
- jaro_winkler (1.5.4)
6
- minitest (5.13.0)
7
- parallel (1.19.1)
8
- parser (2.7.0.1)
9
- ast (~> 2.4.0)
10
- rainbow (3.0.0)
11
- rake (13.0.1)
12
- rubocop (0.79.0)
13
- jaro_winkler (~> 1.5.1)
14
- parallel (~> 1.10)
15
- parser (>= 2.7.0.1)
16
- rainbow (>= 2.2.2, < 4.0)
17
- ruby-progressbar (~> 1.7)
18
- unicode-display_width (>= 1.4.0, < 1.7)
19
- rubocop-performance (1.5.2)
20
- rubocop (>= 0.71.0)
21
- ruby-progressbar (1.10.1)
22
- unicode-display_width (1.6.0)
23
-
24
- PLATFORMS
25
- ruby
26
-
27
- DEPENDENCIES
28
- minitest
29
- rake
30
- rubocop
31
- rubocop-performance
32
-
33
- BUNDLED WITH
34
- 2.0.1