mini_mime 1.0.1 → 1.0.2
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.
- checksums.yaml +4 -4
- data/.travis.yml +4 -14
- data/CHANGELOG +4 -0
- data/Gemfile +2 -0
- data/README.md +32 -16
- data/lib/db/content_type_mime.db +1 -0
- data/lib/db/ext_mime.db +4 -2
- data/lib/mini_mime.rb +14 -4
- data/lib/mini_mime/version.rb +1 -1
- data/mini_mime.gemspec +1 -1
- metadata +5 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6fc13927a7df264030d9607ba6fa3550b2c487a5323ef90fb5a94a1b1822b867
|
4
|
+
data.tar.gz: 3f5e7f9bd173e949bd41bbd9fbaf8407a7814a4c444f4e0f4ed1a77af074d93e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1b20d28512acc6caa7cb2886c26599dde41d10cdfe901f43559cb2b7e5d5da1287a282b2ffc7bf80d681436e907f50c7ac481b63ffc7d3917a4cb48b38d079a6
|
7
|
+
data.tar.gz: a386bf74037df52b3d07b38a2b7d406fb62a0674dc7abd6a5ffde481751724e00c9e7df5cb3b84f7bf9f28d7091af4b2dc54251c90c995f8ff5287f27357ec56
|
data/.travis.yml
CHANGED
@@ -1,24 +1,15 @@
|
|
1
1
|
language: ruby
|
2
|
-
sudo: false
|
3
|
-
cache: bundler
|
4
|
-
|
5
|
-
before_install: gem install bundler -v 1.13.6
|
6
2
|
|
7
3
|
rvm:
|
8
|
-
-
|
9
|
-
-
|
10
|
-
-
|
11
|
-
- 2.
|
12
|
-
- 2.1.10
|
13
|
-
- 2.2.7
|
14
|
-
- 2.3.4
|
15
|
-
- 2.4.1
|
4
|
+
- 2.3
|
5
|
+
- 2.4
|
6
|
+
- 2.5
|
7
|
+
- 2.6
|
16
8
|
- ruby-head
|
17
9
|
- jruby
|
18
10
|
- jruby-9.0.5.0
|
19
11
|
- jruby-9.1.6.0
|
20
12
|
- jruby-head
|
21
|
-
- rbx-2
|
22
13
|
|
23
14
|
matrix:
|
24
15
|
allow_failures:
|
@@ -26,5 +17,4 @@ matrix:
|
|
26
17
|
- rvm: jruby-9.0.5.0
|
27
18
|
- rvm: jruby-9.1.6.0
|
28
19
|
- rvm: jruby-head
|
29
|
-
- rvm: rbx-2
|
30
20
|
fast_finish: true
|
data/CHANGELOG
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -34,46 +34,63 @@ MiniMime.lookup_by_content_type("text/plain").binary?
|
|
34
34
|
|
35
35
|
```
|
36
36
|
|
37
|
+
## Configuration
|
38
|
+
|
39
|
+
If you'd like to add your own mime types, try using custom database files:
|
40
|
+
|
41
|
+
```
|
42
|
+
MiniMime::Configuration.ext_db_path = "path_to_file_extension_db"
|
43
|
+
MiniMime::Configuration.content_type_db_path = "path_to_content_type_db"
|
44
|
+
```
|
45
|
+
|
46
|
+
Check out the [default databases](lib/db) for proper formatting and structure hints.
|
47
|
+
|
37
48
|
## Performance
|
38
49
|
|
39
|
-
MiniMime is optimised to minimize memory usage. It keeps a cache of 100 mime type lookups (and 100 misses). There are benchmarks in the [bench directory](https://github.com/discourse/mini_mime/bench/bench.rb)
|
50
|
+
MiniMime is optimised to minimize memory usage. It keeps a cache of 100 mime type lookups (and 100 misses). There are benchmarks in the [bench directory](https://github.com/discourse/mini_mime/blob/master/bench/bench.rb)
|
40
51
|
|
41
52
|
```
|
42
53
|
Memory stats for requiring mime/types/columnar
|
43
|
-
Total allocated:
|
44
|
-
Total retained:
|
54
|
+
Total allocated: 8712144 bytes (98242 objects)
|
55
|
+
Total retained: 3372545 bytes (33599 objects)
|
45
56
|
|
46
57
|
Memory stats for requiring mini_mime
|
47
|
-
Total allocated:
|
48
|
-
Total retained:
|
58
|
+
Total allocated: 42625 bytes (369 objects)
|
59
|
+
Total retained: 8992 bytes (72 objects)
|
49
60
|
Warming up --------------------------------------
|
50
61
|
cached content_type lookup MiniMime
|
51
|
-
|
62
|
+
85.109k i/100ms
|
52
63
|
content_type lookup MIME::Types
|
53
|
-
|
64
|
+
17.879k i/100ms
|
54
65
|
Calculating -------------------------------------
|
55
66
|
cached content_type lookup MiniMime
|
56
|
-
|
67
|
+
1.105M (± 4.1%) i/s - 5.532M in 5.014895s
|
57
68
|
content_type lookup MIME::Types
|
58
|
-
|
69
|
+
193.528k (± 7.1%) i/s - 965.466k in 5.013925s
|
59
70
|
Warming up --------------------------------------
|
60
71
|
uncached content_type lookup MiniMime
|
61
|
-
|
72
|
+
1.410k i/100ms
|
62
73
|
content_type lookup MIME::Types
|
63
|
-
|
74
|
+
18.012k i/100ms
|
64
75
|
Calculating -------------------------------------
|
65
76
|
uncached content_type lookup MiniMime
|
66
|
-
|
77
|
+
14.689k (± 4.2%) i/s - 73.320k in 5.000779s
|
67
78
|
content_type lookup MIME::Types
|
68
|
-
|
79
|
+
193.459k (± 6.9%) i/s - 972.648k in 5.050731s
|
69
80
|
```
|
70
81
|
|
71
|
-
As a general guideline, cached lookups are
|
82
|
+
As a general guideline, cached lookups are 6x faster than MIME::Types equivalent. Uncached lookups are 10x slower.
|
72
83
|
|
84
|
+
Note: It was run on macOS 10.14.2, and versions of Ruby and gems are below.
|
85
|
+
|
86
|
+
- Ruby 2.6.0
|
87
|
+
- mini_mime (1.0.1)
|
88
|
+
- mime-types (3.2.2)
|
89
|
+
- mime-types-data (3.2018.0812)
|
73
90
|
|
74
91
|
## Development
|
75
92
|
|
76
|
-
MiniMime uses the officially maintained list of mime types at [mime-types-data](https://github.com/mime-types/mime-types-data)repo to build the internal database.
|
93
|
+
MiniMime uses the officially maintained list of mime types at [mime-types-data](https://github.com/mime-types/mime-types-data) repo to build the internal database.
|
77
94
|
|
78
95
|
To update the database run:
|
79
96
|
|
@@ -89,7 +106,6 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
89
106
|
|
90
107
|
Bug reports and pull requests are welcome on GitHub at https://github.com/discourse/mini_mime. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
91
108
|
|
92
|
-
|
93
109
|
## License
|
94
110
|
|
95
111
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/lib/db/content_type_mime.db
CHANGED
@@ -487,6 +487,7 @@ cmp application/vnd.yellowriver-custom-menu
|
|
487
487
|
zir application/vnd.zul base64
|
488
488
|
zaz application/vnd.zzazz.deck+xml base64
|
489
489
|
vxml application/voicexml+xml base64
|
490
|
+
wasm application/wasm 8bit
|
490
491
|
wif application/watcherinfo+xml base64
|
491
492
|
wgt application/widget base64
|
492
493
|
wp5 application/wordperfect5.1 base64
|
data/lib/db/ext_mime.db
CHANGED
@@ -237,6 +237,7 @@ eol audio/vnd.digital-winds
|
|
237
237
|
eot application/vnd.ms-fontobject base64
|
238
238
|
eps application/postscript 8bit
|
239
239
|
epub application/epub+zip base64
|
240
|
+
es application/ecmascript base64
|
240
241
|
es3 application/vnd.eszigno3+xml base64
|
241
242
|
esa application/vnd.osgi.subsystem base64
|
242
243
|
esf application/vnd.epson.esf base64
|
@@ -410,7 +411,7 @@ jpgm image/jpm
|
|
410
411
|
jpgv video/JPEG base64
|
411
412
|
jpm image/jpm base64
|
412
413
|
jpx image/jpx base64
|
413
|
-
js application/
|
414
|
+
js application/javascript 8bit
|
414
415
|
json application/json 8bit
|
415
416
|
jsonml application/jsonml+json base64
|
416
417
|
kar audio/midi base64
|
@@ -507,7 +508,7 @@ mj2 video/MJ2
|
|
507
508
|
mjp2 video/MJ2 base64
|
508
509
|
mjpeg video/x-motion-jpeg base64
|
509
510
|
mjpg video/x-motion-jpeg base64
|
510
|
-
mjs application/
|
511
|
+
mjs application/javascript 8bit
|
511
512
|
mk3d video/x-matroska base64
|
512
513
|
mka audio/x-matroska base64
|
513
514
|
mkd text/markdown quoted-printable
|
@@ -1035,6 +1036,7 @@ vtu model/vnd.vtu
|
|
1035
1036
|
vxml application/voicexml+xml base64
|
1036
1037
|
w3d application/x-director base64
|
1037
1038
|
wad application/x-doom base64
|
1039
|
+
wasm application/wasm 8bit
|
1038
1040
|
wav audio/x-wav base64
|
1039
1041
|
wax audio/x-ms-wax base64
|
1040
1042
|
wbmp image/vnd.wap.wbmp base64
|
data/lib/mini_mime.rb
CHANGED
@@ -14,6 +14,16 @@ module MiniMime
|
|
14
14
|
Db.lookup_by_content_type(mime)
|
15
15
|
end
|
16
16
|
|
17
|
+
module Configuration
|
18
|
+
class << self
|
19
|
+
attr_accessor :ext_db_path
|
20
|
+
attr_accessor :content_type_db_path
|
21
|
+
end
|
22
|
+
|
23
|
+
self.ext_db_path = File.expand_path("../db/ext_mime.db", __FILE__)
|
24
|
+
self.content_type_db_path = File.expand_path("../db/content_type_mime.db", __FILE__)
|
25
|
+
end
|
26
|
+
|
17
27
|
class Info
|
18
28
|
BINARY_ENCODINGS = %w(base64 8bit)
|
19
29
|
|
@@ -83,8 +93,8 @@ module MiniMime
|
|
83
93
|
class RandomAccessDb
|
84
94
|
MAX_CACHED = 100
|
85
95
|
|
86
|
-
def initialize(
|
87
|
-
@path =
|
96
|
+
def initialize(path, sort_order)
|
97
|
+
@path = path
|
88
98
|
@file = File.open(@path)
|
89
99
|
|
90
100
|
@row_length = @file.readline.length
|
@@ -141,8 +151,8 @@ module MiniMime
|
|
141
151
|
end
|
142
152
|
|
143
153
|
def initialize
|
144
|
-
@ext_db = RandomAccessDb.new(
|
145
|
-
@content_type_db = RandomAccessDb.new(
|
154
|
+
@ext_db = RandomAccessDb.new(Configuration.ext_db_path, 0)
|
155
|
+
@content_type_db = RandomAccessDb.new(Configuration.content_type_db_path, 1)
|
146
156
|
end
|
147
157
|
|
148
158
|
def lookup_by_extension(extension)
|
data/lib/mini_mime/version.rb
CHANGED
data/mini_mime.gemspec
CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
23
23
|
spec.require_paths = ["lib"]
|
24
24
|
|
25
|
-
spec.add_development_dependency "bundler", "
|
25
|
+
spec.add_development_dependency "bundler", ">= 1.13"
|
26
26
|
spec.add_development_dependency "rake", "~> 10.0"
|
27
27
|
spec.add_development_dependency "minitest", "~> 5.0"
|
28
28
|
end
|
metadata
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mini_mime
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Saffron
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-07-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.13'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.13'
|
27
27
|
- !ruby/object:Gem::Dependency
|
@@ -94,8 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
94
94
|
- !ruby/object:Gem::Version
|
95
95
|
version: '0'
|
96
96
|
requirements: []
|
97
|
-
|
98
|
-
rubygems_version: 2.7.6
|
97
|
+
rubygems_version: 3.0.1
|
99
98
|
signing_key:
|
100
99
|
specification_version: 4
|
101
100
|
summary: A lightweight mime type lookup toy
|