mini_mime 1.0.3 → 1.1.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dad29ac32b63431b2602b9d5e26157db6e98b8edcc6dbccd8e843cc0ceb78670
4
- data.tar.gz: d8eab6e3b66cd1133b95c10e08a9a9fd10bcdf9c373b4119872d9aa161e155e7
3
+ metadata.gz: 2ba74b6b26e15d4b3c4415cd261469a5ef423a56a12e836b94b92a488ea275ef
4
+ data.tar.gz: 8a85a122d5e0d8e43513eef375b899a2501c51988acca191a2f299aeef7b2065
5
5
  SHA512:
6
- metadata.gz: 8a0954805ffe7ae7c9085516677b7e94ad7f5c1e351979fe5eb01ff63fa5c2b29e6c85b96e4b8bf109dcd2fdd204b7d79eaf10aefda891198d9433f31b79e99a
7
- data.tar.gz: 1bfee23498709b2cd132d2257b56187a411ea969c503819c616075fcfb8e10f839e3a41fa36e68a1e898b4871d695fe3084b184574dbef8a59316157fba2142e
6
+ metadata.gz: d591fdc7a13ef2e1d8b05195b73dab9352263cad29fe60487c7d418e8fe135b021ebee2b485f79b031eb53df92b2dda97bc0db208b57363a430089323c5cd61f
7
+ data.tar.gz: 1d9971f665cfdf6cfc73d80183ee7ccfdbb27261177de17b70ad839203b6f898d8ff322159e3c36525c6d1ebef2d24500aced4f42f75ebbd3e7f955e7fcb853a
@@ -4,29 +4,42 @@ on:
4
4
  pull_request:
5
5
  push:
6
6
  branches:
7
- - master
7
+ - main
8
8
 
9
9
  jobs:
10
10
  build:
11
- runs-on: ubuntu-latest
12
- name: "Ruby ${{ matrix.ruby }} / Failure allowed: ${{ matrix.experimental }}"
11
+ runs-on: ${{ matrix.os }}-latest
12
+ name: "Ruby ${{ matrix.ruby }} / ${{ matrix.os }} / Failure allowed: ${{ matrix.experimental }}"
13
13
  continue-on-error: ${{ matrix.experimental }}
14
+ timeout-minutes: 5
15
+
14
16
  strategy:
15
17
  fail-fast: false
16
18
  matrix:
17
- ruby: ["2.4", "2.5", "2.6", "2.7"]
19
+ os: ["ubuntu"]
20
+ ruby: ["2.6", "2.7", "3.0", "3.1", "3.2"]
18
21
  experimental: [false]
19
22
  include:
23
+ - ruby: "3.2"
24
+ os: "windows"
25
+ experimental: false
20
26
  - ruby: "ruby-head"
27
+ os: "ubuntu"
28
+ experimental: true
29
+ - ruby: "truffleruby-head"
30
+ os: "ubuntu"
21
31
  experimental: true
22
32
  - ruby: "jruby-head"
33
+ os: "ubuntu"
23
34
  experimental: true
24
- - ruby: "jruby-9.1.17.0"
35
+ - ruby: "jruby-9.3.9.0"
36
+ os: "ubuntu"
25
37
  experimental: true
26
- - ruby: "jruby-9.2.13.0"
38
+ - ruby: "jruby-9.4.0.0"
39
+ os: "ubuntu"
27
40
  experimental: true
28
41
  steps:
29
- - uses: actions/checkout@v2
42
+ - uses: actions/checkout@v3
30
43
  - uses: ruby/setup-ruby@v1
31
44
  with:
32
45
  ruby-version: ${{ matrix.ruby }}
@@ -11,7 +11,7 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  name: "Update MIME type DB"
13
13
  steps:
14
- - uses: actions/checkout@v2
14
+ - uses: actions/checkout@v3
15
15
  - uses: ruby/setup-ruby@v1
16
16
  with:
17
17
  ruby-version: "2.7"
data/CHANGELOG CHANGED
@@ -1,3 +1,27 @@
1
+ 08-08-2023
2
+ - Version 1.1.5
3
+ - Update mime types from upstream
4
+
5
+ 08-08-2023
6
+ - Version 1.1.4
7
+ - Version 1.1.3 had issues on Windows which does not support pread, added a polyfill
8
+
9
+ 04-08-2023
10
+ - Version 1.1.3
11
+ - Added fork safety by migrating from seek+read to pread
12
+
13
+ 11-10-2021
14
+ - Version 1.1.2
15
+ - update mime types from upstream
16
+
17
+ 23-08-2021
18
+ - Version 1.1.1
19
+ - update mime types from upstream
20
+
21
+ 05-04-2021
22
+ - Version 1.1.0
23
+ - MiniMime.lookup_by_extension is now case insensitive
24
+
1
25
  26-03-2021
2
26
  - Version 1.0.3
3
27
  - Update mime types from upstream
@@ -35,6 +35,7 @@ jsonml application/jsonml+json
35
35
  lostxml application/lost+xml base64
36
36
  hqx application/mac-binhex40 8bit
37
37
  mads application/mads+xml base64
38
+ webmanifest application/manifest+json base64
38
39
  mrc application/marc base64
39
40
  mrcx application/marcxml+xml base64
40
41
  ma application/mathematica base64
@@ -223,6 +224,7 @@ xbd application/vnd.fujixerox.docuworks.binder
223
224
  fzs application/vnd.fuzzysheet base64
224
225
  txd application/vnd.genomatix.tuxedo base64
225
226
  ggb application/vnd.geogebra.file base64
227
+ ggs application/vnd.geogebra.slides base64
226
228
  ggt application/vnd.geogebra.tool base64
227
229
  gex application/vnd.geometry-explorer base64
228
230
  gxt application/vnd.geonext base64
@@ -691,6 +693,7 @@ ttf font/ttf
691
693
  woff font/woff base64
692
694
  woff2 font/woff2 base64
693
695
  avif image/avif base64
696
+ bmp image/bmp base64
694
697
  cgm image/cgm base64
695
698
  g3 image/g3fax base64
696
699
  gif image/gif base64
@@ -730,7 +733,6 @@ xif image/vnd.xiff
730
733
  webp image/webp base64
731
734
  3ds image/x-3ds base64
732
735
  dng image/x-adobe-dng base64
733
- bmp image/x-bmp base64
734
736
  cr2 image/x-canon-cr2 base64
735
737
  crw image/x-canon-crw base64
736
738
  ras image/x-cmu-raster base64
@@ -786,6 +788,7 @@ ics text/calendar
786
788
  css text/css 8bit
787
789
  csv text/csv 8bit
788
790
  html text/html 8bit
791
+ js text/javascript quoted-printable
789
792
  markdown text/markdown quoted-printable
790
793
  n3 text/n3 quoted-printable
791
794
  txt text/plain quoted-printable
@@ -811,6 +814,7 @@ si text/vnd.wap.si
811
814
  sl text/vnd.wap.sl quoted-printable
812
815
  wml text/vnd.wap.wml quoted-printable
813
816
  wmls text/vnd.wap.wmlscript quoted-printable
817
+ vtt text/vtt quoted-printable
814
818
  asm text/x-asm quoted-printable
815
819
  c text/x-c quoted-printable
816
820
  coffee text/x-coffescript 8bit
data/lib/db/ext_mime.db CHANGED
@@ -70,7 +70,7 @@ blb application/x-blorb
70
70
  bleep application/x-bleeper base64
71
71
  blorb application/x-blorb base64
72
72
  bmi application/vnd.bmi base64
73
- bmp image/x-bmp base64
73
+ bmp image/bmp base64
74
74
  book application/vnd.framemaker base64
75
75
  box application/vnd.previewsystems.box base64
76
76
  boz application/x-bzip2 base64
@@ -121,6 +121,7 @@ chrt application/vnd.kde.kchart
121
121
  cif chemical/x-cif base64
122
122
  cii application/vnd.anser-web-certificate-issue-initiation base64
123
123
  cil application/vnd.ms-artgalry base64
124
+ cjs text/javascript quoted-printable
124
125
  cla application/vnd.claymore base64
125
126
  class application/octet-stream base64
126
127
  clkk application/vnd.crick.clicker.keyboard base64
@@ -312,6 +313,7 @@ gdl model/vnd.gdl
312
313
  geo application/vnd.dynageo base64
313
314
  gex application/vnd.geometry-explorer base64
314
315
  ggb application/vnd.geogebra.file base64
316
+ ggs application/vnd.geogebra.slides base64
315
317
  ggt application/vnd.geogebra.tool base64
316
318
  ghf application/vnd.groove-help base64
317
319
  gif image/gif base64
@@ -408,6 +410,7 @@ jad text/vnd.sun.j2me.app-descriptor
408
410
  jam application/vnd.jam base64
409
411
  jar application/java-archive base64
410
412
  java text/x-java-source quoted-printable
413
+ jfif image/jpeg base64
411
414
  jisp application/vnd.jisp base64
412
415
  jlt application/vnd.hp-jlyt base64
413
416
  jnlp application/x-java-jnlp-file base64
@@ -422,7 +425,7 @@ jpgm image/jpm
422
425
  jpgv video/JPEG base64
423
426
  jpm image/jpm base64
424
427
  jpx image/jpx base64
425
- js application/javascript 8bit
428
+ js text/javascript quoted-printable
426
429
  json application/json 8bit
427
430
  jsonml application/jsonml+json base64
428
431
  k25 image/x-kodak-k25 base64
@@ -521,7 +524,7 @@ mj2 video/MJ2
521
524
  mjp2 video/MJ2 base64
522
525
  mjpeg video/x-motion-jpeg base64
523
526
  mjpg video/x-motion-jpeg base64
524
- mjs application/javascript 8bit
527
+ mjs text/javascript quoted-printable
525
528
  mk3d video/x-matroska base64
526
529
  mka audio/x-matroska base64
527
530
  mkd text/markdown quoted-printable
@@ -1055,6 +1058,7 @@ vsf application/vnd.vsf
1055
1058
  vss application/vnd.visio base64
1056
1059
  vst application/vnd.visio base64
1057
1060
  vsw application/vnd.visio base64
1061
+ vtt text/vtt quoted-printable
1058
1062
  vtu model/vnd.vtu base64
1059
1063
  vxml application/voicexml+xml base64
1060
1064
  w3d application/x-director base64
@@ -1071,6 +1075,7 @@ wdp image/vnd.ms-photo
1071
1075
  weba audio/webm base64
1072
1076
  webapp application/x-web-app-manifest+json base64
1073
1077
  webm audio/webm base64
1078
+ webmanifest application/manifest+json base64
1074
1079
  webp image/webp base64
1075
1080
  wg application/vnd.pmi.widget base64
1076
1081
  wgt application/widget base64
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module MiniMime
3
- VERSION = "1.0.3"
3
+ VERSION = "1.1.5"
4
4
  end
data/lib/mini_mime.rb CHANGED
@@ -50,28 +50,22 @@ module MiniMime
50
50
  end
51
51
 
52
52
  class Db
53
- LOCK = Mutex.new
54
-
55
53
  def self.lookup_by_filename(filename)
56
54
  extension = File.extname(filename)
57
55
  return if extension.empty?
58
56
  extension = extension[1..-1]
59
- extension.downcase!
60
57
  lookup_by_extension(extension)
61
58
  end
62
59
 
63
60
  def self.lookup_by_extension(extension)
64
- LOCK.synchronize do
65
- @db ||= new
66
- @db.lookup_by_extension(extension)
67
- end
61
+ @db ||= new
62
+ @db.lookup_by_extension(extension) ||
63
+ @db.lookup_by_extension(extension.downcase)
68
64
  end
69
65
 
70
66
  def self.lookup_by_content_type(content_type)
71
- LOCK.synchronize do
72
- @db ||= new
73
- @db.lookup_by_content_type(content_type)
74
- end
67
+ @db ||= new
68
+ @db.lookup_by_content_type(content_type)
75
69
  end
76
70
 
77
71
  class Cache
@@ -91,14 +85,40 @@ module MiniMime
91
85
  end
92
86
  end
93
87
 
88
+ if ::File.method_defined?(:pread)
89
+ PReadFile = ::File
90
+ else
91
+ # For Windows support
92
+ class PReadFile
93
+ def initialize(filename)
94
+ @mutex = Mutex.new
95
+ # We must open the file in binary mode
96
+ # otherwise Ruby's automatic line terminator
97
+ # translation will skew the row size
98
+ @file = ::File.open(filename, 'rb')
99
+ end
100
+
101
+ def readline(*args)
102
+ @file.readline(*args)
103
+ end
104
+
105
+ def pread(size, offset)
106
+ @mutex.synchronize do
107
+ @file.seek(offset, IO::SEEK_SET)
108
+ @file.read(size)
109
+ end
110
+ end
111
+ end
112
+ end
113
+
94
114
  class RandomAccessDb
95
115
  MAX_CACHED = 100
96
116
 
97
117
  def initialize(path, sort_order)
98
118
  @path = path
99
- @file = File.open(@path)
119
+ @file = PReadFile.new(@path)
100
120
 
101
- @row_length = @file.readline.length
121
+ @row_length = @file.readline("\n").length
102
122
  @file_length = File.size(@path)
103
123
  @rows = @file_length / @row_length
104
124
 
@@ -146,8 +166,7 @@ module MiniMime
146
166
  end
147
167
 
148
168
  def resolve(row)
149
- @file.seek(row * @row_length)
150
- Info.new(@file.readline)
169
+ Info.new(@file.pread(@row_length, row * @row_length).force_encoding(Encoding::UTF_8))
151
170
  end
152
171
  end
153
172
 
data/mini_mime.gemspec CHANGED
@@ -10,8 +10,8 @@ Gem::Specification.new do |spec|
10
10
  spec.authors = ["Sam Saffron"]
11
11
  spec.email = ["[email protected]"]
12
12
 
13
- spec.summary = %q{A lightweight mime type lookup toy}
14
- spec.description = %q{A lightweight mime type lookup toy}
13
+ spec.summary = %q{A minimal mime type library}
14
+ spec.description = %q{A minimal mime type library}
15
15
  spec.homepage = "https://github.com/discourse/mini_mime"
16
16
  spec.license = "MIT"
17
17
 
@@ -21,10 +21,11 @@ Gem::Specification.new do |spec|
21
21
  spec.bindir = "exe"
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ["lib"]
24
+ spec.required_ruby_version = ">= 2.6.0"
24
25
 
25
- spec.add_development_dependency "bundler", ">= 1.13"
26
- spec.add_development_dependency "rake", "~> 10.0"
27
- spec.add_development_dependency "minitest", "~> 5.0"
26
+ spec.add_development_dependency "bundler"
27
+ spec.add_development_dependency "rake"
28
+ spec.add_development_dependency "minitest"
28
29
  spec.add_development_dependency "rubocop"
29
30
  spec.add_development_dependency "rubocop-discourse"
30
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mini_mime
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-03-25 00:00:00.000000000 Z
11
+ date: 2023-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.13'
19
+ version: '0'
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
- version: '1.13'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '5.0'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '5.0'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rubocop
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -80,7 +80,7 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- description: A lightweight mime type lookup toy
83
+ description: A minimal mime type library
84
84
  email:
85
85
86
86
  executables: []
@@ -118,15 +118,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
118
118
  requirements:
119
119
  - - ">="
120
120
  - !ruby/object:Gem::Version
121
- version: '0'
121
+ version: 2.6.0
122
122
  required_rubygems_version: !ruby/object:Gem::Requirement
123
123
  requirements:
124
124
  - - ">="
125
125
  - !ruby/object:Gem::Version
126
126
  version: '0'
127
127
  requirements: []
128
- rubygems_version: 3.2.2
128
+ rubygems_version: 3.4.6
129
129
  signing_key:
130
130
  specification_version: 4
131
- summary: A lightweight mime type lookup toy
131
+ summary: A minimal mime type library
132
132
  test_files: []
OSZAR »