mini_mime 1.1.2 → 1.1.4

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: 69ca27284c4e5ea1ed0cb7168b4f607f9b990f51ab4359e84b2e885e728b076d
4
- data.tar.gz: fcea561edc2c9a3be7b6755cdb43b0b3cde7f6c34090f6271daf1760fd8ced2a
3
+ metadata.gz: 3106a12fa7abf2937ee5a081fe4ea70ba5b4fa7f63aa5ee9cf084c487bc92a64
4
+ data.tar.gz: dbf9c1dddd1fbc5b189e008aec2bdea0b89e87247f1a018638b79ed518ea3b96
5
5
  SHA512:
6
- metadata.gz: b65b3456107b00dcb2891f5b86cb4c134a7bdd187043670edbd2f8a7c6c8034b66efd40a5fd2a56711b53bb34249c792d88315d04b59327a775ce5483294769e
7
- data.tar.gz: 1d488dc9b02a5a871dc313ab72860813b2e7245f9e889896e8072afaa5e31592850baa21249424765d7047c043431f61836a76078fc7b1ecc195c4f68465f97d
6
+ metadata.gz: bff186a11b2a3b60b14770eb3b40847463da24d9f971f5a52a865a742f8922697e48558404f5890ab25296c635386ce9cbf2b5c60c2931d1f4dcb7b9cec476c9
7
+ data.tar.gz: e344e520299cba8a3635c84af1dc1fde1831aeba4613b4b19f32fef0994cff0f7b9c7b04dc4d5724fa95fc6b052d6bc180e54010fbecbfcdac9cd1935bdb50ed
@@ -4,31 +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"
21
28
  experimental: true
22
29
  - ruby: "truffleruby-head"
30
+ os: "ubuntu"
23
31
  experimental: true
24
32
  - ruby: "jruby-head"
33
+ os: "ubuntu"
25
34
  experimental: true
26
- - ruby: "jruby-9.1.17.0"
35
+ - ruby: "jruby-9.3.9.0"
36
+ os: "ubuntu"
27
37
  experimental: true
28
- - ruby: "jruby-9.2.13.0"
38
+ - ruby: "jruby-9.4.0.0"
39
+ os: "ubuntu"
29
40
  experimental: true
30
41
  steps:
31
- - uses: actions/checkout@v2
42
+ - uses: actions/checkout@v3
32
43
  - uses: ruby/setup-ruby@v1
33
44
  with:
34
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,11 @@
1
+ 08-08-2023
2
+ - Version 1.1.4
3
+ - Version 1.1.3 had issues on Windows which does not support pread, added a polyfill
4
+
5
+ 04-08-2023
6
+ - Version 1.1.3
7
+ - Added fork safety by migrating from seek+read to pread
8
+
1
9
  11-10-2021
2
10
  - Version 1.1.2
3
11
  - update mime types from upstream
@@ -692,6 +692,7 @@ ttf font/ttf
692
692
  woff font/woff base64
693
693
  woff2 font/woff2 base64
694
694
  avif image/avif base64
695
+ bmp image/bmp base64
695
696
  cgm image/cgm base64
696
697
  g3 image/g3fax base64
697
698
  gif image/gif base64
@@ -731,7 +732,6 @@ xif image/vnd.xiff
731
732
  webp image/webp base64
732
733
  3ds image/x-3ds base64
733
734
  dng image/x-adobe-dng base64
734
- bmp image/x-bmp base64
735
735
  cr2 image/x-canon-cr2 base64
736
736
  crw image/x-canon-crw base64
737
737
  ras image/x-cmu-raster base64
@@ -787,6 +787,7 @@ ics text/calendar
787
787
  css text/css 8bit
788
788
  csv text/csv 8bit
789
789
  html text/html 8bit
790
+ js text/javascript quoted-printable
790
791
  markdown text/markdown quoted-printable
791
792
  n3 text/n3 quoted-printable
792
793
  txt text/plain quoted-printable
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
@@ -408,6 +408,7 @@ jad text/vnd.sun.j2me.app-descriptor
408
408
  jam application/vnd.jam base64
409
409
  jar application/java-archive base64
410
410
  java text/x-java-source quoted-printable
411
+ jfif image/jpeg base64
411
412
  jisp application/vnd.jisp base64
412
413
  jlt application/vnd.hp-jlyt base64
413
414
  jnlp application/x-java-jnlp-file base64
@@ -422,7 +423,7 @@ jpgm image/jpm
422
423
  jpgv video/JPEG base64
423
424
  jpm image/jpm base64
424
425
  jpx image/jpx base64
425
- js application/javascript 8bit
426
+ js text/javascript quoted-printable
426
427
  json application/json 8bit
427
428
  jsonml application/jsonml+json base64
428
429
  k25 image/x-kodak-k25 base64
@@ -521,7 +522,7 @@ mj2 video/MJ2
521
522
  mjp2 video/MJ2 base64
522
523
  mjpeg video/x-motion-jpeg base64
523
524
  mjpg video/x-motion-jpeg base64
524
- mjs application/javascript 8bit
525
+ mjs text/javascript quoted-printable
525
526
  mk3d video/x-matroska base64
526
527
  mka audio/x-matroska base64
527
528
  mkd text/markdown quoted-printable
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module MiniMime
3
- VERSION = "1.1.2"
3
+ VERSION = "1.1.4"
4
4
  end
data/lib/mini_mime.rb CHANGED
@@ -50,8 +50,6 @@ 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?
@@ -60,18 +58,14 @@ module MiniMime
60
58
  end
61
59
 
62
60
  def self.lookup_by_extension(extension)
63
- LOCK.synchronize do
64
- @db ||= new
65
- @db.lookup_by_extension(extension) ||
66
- @db.lookup_by_extension(extension.downcase)
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,6 +21,7 @@ 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
26
  spec.add_development_dependency "bundler"
26
27
  spec.add_development_dependency "rake"
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.1.2
4
+ version: 1.1.4
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-10-11 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
@@ -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.1.6
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 »