carrierwave 1.3.4 → 3.0.7
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/README.md +235 -91
- data/lib/carrierwave/compatibility/paperclip.rb +4 -2
- data/lib/carrierwave/downloader/base.rb +101 -0
- data/lib/carrierwave/downloader/remote_file.rb +68 -0
- data/lib/carrierwave/locale/en.yml +9 -6
- data/lib/carrierwave/mount.rb +53 -61
- data/lib/carrierwave/mounter.rb +167 -77
- data/lib/carrierwave/orm/activerecord.rb +23 -58
- data/lib/carrierwave/processing/mini_magick.rb +108 -123
- data/lib/carrierwave/processing/rmagick.rb +11 -15
- data/lib/carrierwave/processing/vips.rb +284 -0
- data/lib/carrierwave/processing.rb +1 -0
- data/lib/carrierwave/sanitized_file.rb +60 -66
- data/lib/carrierwave/storage/abstract.rb +5 -5
- data/lib/carrierwave/storage/file.rb +6 -5
- data/lib/carrierwave/storage/fog.rb +101 -62
- data/lib/carrierwave/storage.rb +1 -0
- data/lib/carrierwave/test/matchers.rb +11 -7
- data/lib/carrierwave/uploader/cache.rb +40 -24
- data/lib/carrierwave/uploader/callbacks.rb +1 -1
- data/lib/carrierwave/uploader/configuration.rb +38 -19
- data/lib/carrierwave/uploader/content_type_allowlist.rb +62 -0
- data/lib/carrierwave/uploader/content_type_denylist.rb +62 -0
- data/lib/carrierwave/uploader/dimension.rb +66 -0
- data/lib/carrierwave/uploader/download.rb +2 -123
- data/lib/carrierwave/uploader/extension_allowlist.rb +63 -0
- data/lib/carrierwave/uploader/extension_denylist.rb +64 -0
- data/lib/carrierwave/uploader/file_size.rb +2 -2
- data/lib/carrierwave/uploader/mountable.rb +6 -0
- data/lib/carrierwave/uploader/processing.rb +42 -7
- data/lib/carrierwave/uploader/proxy.rb +17 -4
- data/lib/carrierwave/uploader/serialization.rb +1 -1
- data/lib/carrierwave/uploader/store.rb +47 -7
- data/lib/carrierwave/uploader/url.rb +7 -4
- data/lib/carrierwave/uploader/versions.rb +157 -109
- data/lib/carrierwave/uploader.rb +10 -17
- data/lib/carrierwave/utilities/file_name.rb +47 -0
- data/lib/carrierwave/utilities/uri.rb +14 -11
- data/lib/carrierwave/utilities.rb +1 -0
- data/lib/carrierwave/validations/active_model.rb +7 -9
- data/lib/carrierwave/version.rb +1 -1
- data/lib/carrierwave.rb +13 -17
- data/lib/generators/templates/{uploader.rb → uploader.rb.erb} +3 -3
- data/lib/generators/uploader_generator.rb +3 -3
- metadata +96 -35
- data/lib/carrierwave/uploader/content_type_blacklist.rb +0 -48
- data/lib/carrierwave/uploader/content_type_whitelist.rb +0 -48
- data/lib/carrierwave/uploader/extension_blacklist.rb +0 -51
- data/lib/carrierwave/uploader/extension_whitelist.rb +0 -52
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: carrierwave
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonas Nicklas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,76 +16,98 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 6.0.0
|
20
20
|
type: :runtime
|
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:
|
26
|
+
version: 6.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activemodel
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 6.0.0
|
34
34
|
type: :runtime
|
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:
|
40
|
+
version: 6.0.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: image_processing
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '1.
|
47
|
+
version: '1.1'
|
48
48
|
type: :runtime
|
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: '1.
|
54
|
+
version: '1.1'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: marcel
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.0.0
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
60
67
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.
|
68
|
+
version: 1.0.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: addressable
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
62
73
|
- - "~>"
|
63
74
|
- !ruby/object:Gem::Version
|
64
|
-
version: '
|
75
|
+
version: '2.6'
|
65
76
|
type: :runtime
|
66
77
|
prerelease: false
|
67
78
|
version_requirements: !ruby/object:Gem::Requirement
|
68
79
|
requirements:
|
69
|
-
- - "
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '2.6'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: ssrf_filter
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
70
88
|
- !ruby/object:Gem::Version
|
71
|
-
version: 1.
|
89
|
+
version: '1.0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
72
94
|
- - "~>"
|
73
95
|
- !ruby/object:Gem::Version
|
74
96
|
version: '1.0'
|
75
97
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
98
|
+
name: csv
|
77
99
|
requirement: !ruby/object:Gem::Requirement
|
78
100
|
requirements:
|
79
|
-
- - "
|
101
|
+
- - "~>"
|
80
102
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
103
|
+
version: '3.0'
|
82
104
|
type: :development
|
83
105
|
prerelease: false
|
84
106
|
version_requirements: !ruby/object:Gem::Requirement
|
85
107
|
requirements:
|
86
|
-
- - "
|
108
|
+
- - "~>"
|
87
109
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
110
|
+
version: '3.0'
|
89
111
|
- !ruby/object:Gem::Dependency
|
90
112
|
name: cucumber
|
91
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -115,7 +137,7 @@ dependencies:
|
|
115
137
|
- !ruby/object:Gem::Version
|
116
138
|
version: '3.4'
|
117
139
|
- !ruby/object:Gem::Dependency
|
118
|
-
name:
|
140
|
+
name: rspec-retry
|
119
141
|
requirement: !ruby/object:Gem::Requirement
|
120
142
|
requirements:
|
121
143
|
- - ">="
|
@@ -129,21 +151,21 @@ dependencies:
|
|
129
151
|
- !ruby/object:Gem::Version
|
130
152
|
version: '0'
|
131
153
|
- !ruby/object:Gem::Dependency
|
132
|
-
name:
|
154
|
+
name: rubocop
|
133
155
|
requirement: !ruby/object:Gem::Requirement
|
134
156
|
requirements:
|
135
157
|
- - "~>"
|
136
158
|
- !ruby/object:Gem::Version
|
137
|
-
version:
|
159
|
+
version: '1.28'
|
138
160
|
type: :development
|
139
161
|
prerelease: false
|
140
162
|
version_requirements: !ruby/object:Gem::Requirement
|
141
163
|
requirements:
|
142
164
|
- - "~>"
|
143
165
|
- !ruby/object:Gem::Version
|
144
|
-
version:
|
166
|
+
version: '1.28'
|
145
167
|
- !ruby/object:Gem::Dependency
|
146
|
-
name:
|
168
|
+
name: webmock
|
147
169
|
requirement: !ruby/object:Gem::Requirement
|
148
170
|
requirements:
|
149
171
|
- - ">="
|
@@ -157,7 +179,7 @@ dependencies:
|
|
157
179
|
- !ruby/object:Gem::Version
|
158
180
|
version: '0'
|
159
181
|
- !ruby/object:Gem::Dependency
|
160
|
-
name: fog-
|
182
|
+
name: fog-aws
|
161
183
|
requirement: !ruby/object:Gem::Requirement
|
162
184
|
requirements:
|
163
185
|
- - ">="
|
@@ -170,6 +192,26 @@ dependencies:
|
|
170
192
|
- - ">="
|
171
193
|
- !ruby/object:Gem::Version
|
172
194
|
version: '0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: fog-google
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - "~>"
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '1.7'
|
202
|
+
- - "!="
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: 1.12.1
|
205
|
+
type: :development
|
206
|
+
prerelease: false
|
207
|
+
version_requirements: !ruby/object:Gem::Requirement
|
208
|
+
requirements:
|
209
|
+
- - "~>"
|
210
|
+
- !ruby/object:Gem::Version
|
211
|
+
version: '1.7'
|
212
|
+
- - "!="
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: 1.12.1
|
173
215
|
- !ruby/object:Gem::Dependency
|
174
216
|
name: fog-local
|
175
217
|
requirement: !ruby/object:Gem::Requirement
|
@@ -268,6 +310,20 @@ dependencies:
|
|
268
310
|
- - ">="
|
269
311
|
- !ruby/object:Gem::Version
|
270
312
|
version: '0'
|
313
|
+
- !ruby/object:Gem::Dependency
|
314
|
+
name: pry-byebug
|
315
|
+
requirement: !ruby/object:Gem::Requirement
|
316
|
+
requirements:
|
317
|
+
- - ">="
|
318
|
+
- !ruby/object:Gem::Version
|
319
|
+
version: '0'
|
320
|
+
type: :development
|
321
|
+
prerelease: false
|
322
|
+
version_requirements: !ruby/object:Gem::Requirement
|
323
|
+
requirements:
|
324
|
+
- - ">="
|
325
|
+
- !ruby/object:Gem::Version
|
326
|
+
version: '0'
|
271
327
|
description: Upload files in your Ruby applications, map them to a range of ORMs,
|
272
328
|
store them on different backends.
|
273
329
|
email:
|
@@ -280,6 +336,8 @@ files:
|
|
280
336
|
- README.md
|
281
337
|
- lib/carrierwave.rb
|
282
338
|
- lib/carrierwave/compatibility/paperclip.rb
|
339
|
+
- lib/carrierwave/downloader/base.rb
|
340
|
+
- lib/carrierwave/downloader/remote_file.rb
|
283
341
|
- lib/carrierwave/error.rb
|
284
342
|
- lib/carrierwave/locale/en.yml
|
285
343
|
- lib/carrierwave/mount.rb
|
@@ -288,6 +346,7 @@ files:
|
|
288
346
|
- lib/carrierwave/processing.rb
|
289
347
|
- lib/carrierwave/processing/mini_magick.rb
|
290
348
|
- lib/carrierwave/processing/rmagick.rb
|
349
|
+
- lib/carrierwave/processing/vips.rb
|
291
350
|
- lib/carrierwave/sanitized_file.rb
|
292
351
|
- lib/carrierwave/storage.rb
|
293
352
|
- lib/carrierwave/storage/abstract.rb
|
@@ -298,12 +357,13 @@ files:
|
|
298
357
|
- lib/carrierwave/uploader/cache.rb
|
299
358
|
- lib/carrierwave/uploader/callbacks.rb
|
300
359
|
- lib/carrierwave/uploader/configuration.rb
|
301
|
-
- lib/carrierwave/uploader/
|
302
|
-
- lib/carrierwave/uploader/
|
360
|
+
- lib/carrierwave/uploader/content_type_allowlist.rb
|
361
|
+
- lib/carrierwave/uploader/content_type_denylist.rb
|
303
362
|
- lib/carrierwave/uploader/default_url.rb
|
363
|
+
- lib/carrierwave/uploader/dimension.rb
|
304
364
|
- lib/carrierwave/uploader/download.rb
|
305
|
-
- lib/carrierwave/uploader/
|
306
|
-
- lib/carrierwave/uploader/
|
365
|
+
- lib/carrierwave/uploader/extension_allowlist.rb
|
366
|
+
- lib/carrierwave/uploader/extension_denylist.rb
|
307
367
|
- lib/carrierwave/uploader/file_size.rb
|
308
368
|
- lib/carrierwave/uploader/mountable.rb
|
309
369
|
- lib/carrierwave/uploader/processing.rb
|
@@ -314,10 +374,11 @@ files:
|
|
314
374
|
- lib/carrierwave/uploader/url.rb
|
315
375
|
- lib/carrierwave/uploader/versions.rb
|
316
376
|
- lib/carrierwave/utilities.rb
|
377
|
+
- lib/carrierwave/utilities/file_name.rb
|
317
378
|
- lib/carrierwave/utilities/uri.rb
|
318
379
|
- lib/carrierwave/validations/active_model.rb
|
319
380
|
- lib/carrierwave/version.rb
|
320
|
-
- lib/generators/templates/uploader.rb
|
381
|
+
- lib/generators/templates/uploader.rb.erb
|
321
382
|
- lib/generators/uploader_generator.rb
|
322
383
|
homepage: https://github.com/carrierwaveuploader/carrierwave
|
323
384
|
licenses:
|
@@ -332,14 +393,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
332
393
|
requirements:
|
333
394
|
- - ">="
|
334
395
|
- !ruby/object:Gem::Version
|
335
|
-
version: 2.
|
396
|
+
version: 2.5.0
|
336
397
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
337
398
|
requirements:
|
338
399
|
- - ">="
|
339
400
|
- !ruby/object:Gem::Version
|
340
401
|
version: '0'
|
341
402
|
requirements: []
|
342
|
-
rubygems_version: 3.4.
|
403
|
+
rubygems_version: 3.4.10
|
343
404
|
signing_key:
|
344
405
|
specification_version: 4
|
345
406
|
summary: Ruby file upload library
|
@@ -1,48 +0,0 @@
|
|
1
|
-
module CarrierWave
|
2
|
-
module Uploader
|
3
|
-
module ContentTypeBlacklist
|
4
|
-
extend ActiveSupport::Concern
|
5
|
-
|
6
|
-
included do
|
7
|
-
before :cache, :check_content_type_blacklist!
|
8
|
-
end
|
9
|
-
|
10
|
-
##
|
11
|
-
# Override this method in your uploader to provide a blacklist of files content types
|
12
|
-
# which are not allowed to be uploaded.
|
13
|
-
# Not only strings but Regexp are allowed as well.
|
14
|
-
#
|
15
|
-
# === Returns
|
16
|
-
#
|
17
|
-
# [NilClass, String, Regexp, Array[String, Regexp]] a blacklist of content types which are not allowed to be uploaded
|
18
|
-
#
|
19
|
-
# === Examples
|
20
|
-
#
|
21
|
-
# def content_type_blacklist
|
22
|
-
# %w(text/json application/json)
|
23
|
-
# end
|
24
|
-
#
|
25
|
-
# Basically the same, but using a Regexp:
|
26
|
-
#
|
27
|
-
# def content_type_blacklist
|
28
|
-
# [/(text|application)\/json/]
|
29
|
-
# end
|
30
|
-
#
|
31
|
-
def content_type_blacklist; end
|
32
|
-
|
33
|
-
private
|
34
|
-
|
35
|
-
def check_content_type_blacklist!(new_file)
|
36
|
-
content_type = new_file.content_type
|
37
|
-
if content_type_blacklist && blacklisted_content_type?(content_type)
|
38
|
-
raise CarrierWave::IntegrityError, I18n.translate(:"errors.messages.content_type_blacklist_error", content_type: content_type)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def blacklisted_content_type?(content_type)
|
43
|
-
Array(content_type_blacklist).any? { |item| content_type =~ /#{item}/ }
|
44
|
-
end
|
45
|
-
|
46
|
-
end # ContentTypeBlacklist
|
47
|
-
end # Uploader
|
48
|
-
end # CarrierWave
|
@@ -1,48 +0,0 @@
|
|
1
|
-
module CarrierWave
|
2
|
-
module Uploader
|
3
|
-
module ContentTypeWhitelist
|
4
|
-
extend ActiveSupport::Concern
|
5
|
-
|
6
|
-
included do
|
7
|
-
before :cache, :check_content_type_whitelist!
|
8
|
-
end
|
9
|
-
|
10
|
-
##
|
11
|
-
# Override this method in your uploader to provide a whitelist of files content types
|
12
|
-
# which are allowed to be uploaded.
|
13
|
-
# Not only strings but Regexp are allowed as well.
|
14
|
-
#
|
15
|
-
# === Returns
|
16
|
-
#
|
17
|
-
# [NilClass, String, Regexp, Array[String, Regexp]] a whitelist of content types which are allowed to be uploaded
|
18
|
-
#
|
19
|
-
# === Examples
|
20
|
-
#
|
21
|
-
# def content_type_whitelist
|
22
|
-
# %w(text/json application/json)
|
23
|
-
# end
|
24
|
-
#
|
25
|
-
# Basically the same, but using a Regexp:
|
26
|
-
#
|
27
|
-
# def content_type_whitelist
|
28
|
-
# [/(text|application)\/json/]
|
29
|
-
# end
|
30
|
-
#
|
31
|
-
def content_type_whitelist; end
|
32
|
-
|
33
|
-
private
|
34
|
-
|
35
|
-
def check_content_type_whitelist!(new_file)
|
36
|
-
content_type = new_file.content_type
|
37
|
-
if content_type_whitelist && !whitelisted_content_type?(content_type)
|
38
|
-
raise CarrierWave::IntegrityError, I18n.translate(:"errors.messages.content_type_whitelist_error", content_type: content_type, allowed_types: Array(content_type_whitelist).join(", "))
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def whitelisted_content_type?(content_type)
|
43
|
-
Array(content_type_whitelist).any? { |item| content_type =~ /#{item}/ }
|
44
|
-
end
|
45
|
-
|
46
|
-
end # ContentTypeWhitelist
|
47
|
-
end # Uploader
|
48
|
-
end # CarrierWave
|
@@ -1,51 +0,0 @@
|
|
1
|
-
module CarrierWave
|
2
|
-
module Uploader
|
3
|
-
module ExtensionBlacklist
|
4
|
-
extend ActiveSupport::Concern
|
5
|
-
|
6
|
-
included do
|
7
|
-
before :cache, :check_extension_blacklist!
|
8
|
-
end
|
9
|
-
|
10
|
-
##
|
11
|
-
# Override this method in your uploader to provide a black list of extensions which
|
12
|
-
# are prohibited to be uploaded. Compares the file's extension case insensitive.
|
13
|
-
# Furthermore, not only strings but Regexp are allowed as well.
|
14
|
-
#
|
15
|
-
# When using a Regexp in the black list, `\A` and `\z` are automatically added to
|
16
|
-
# the Regexp expression, also case insensitive.
|
17
|
-
#
|
18
|
-
# === Returns
|
19
|
-
|
20
|
-
# [NilClass, String, Regexp, Array[String, Regexp]] a black list of extensions which are prohibited to be uploaded
|
21
|
-
#
|
22
|
-
# === Examples
|
23
|
-
#
|
24
|
-
# def extension_blacklist
|
25
|
-
# %w(swf tiff)
|
26
|
-
# end
|
27
|
-
#
|
28
|
-
# Basically the same, but using a Regexp:
|
29
|
-
#
|
30
|
-
# def extension_blacklist
|
31
|
-
# [/swf/, 'tiff']
|
32
|
-
# end
|
33
|
-
#
|
34
|
-
|
35
|
-
def extension_blacklist; end
|
36
|
-
|
37
|
-
private
|
38
|
-
|
39
|
-
def check_extension_blacklist!(new_file)
|
40
|
-
extension = new_file.extension.to_s
|
41
|
-
if extension_blacklist && blacklisted_extension?(extension)
|
42
|
-
raise CarrierWave::IntegrityError, I18n.translate(:"errors.messages.extension_blacklist_error", extension: new_file.extension.inspect, prohibited_types: Array(extension_blacklist).join(", "))
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def blacklisted_extension?(extension)
|
47
|
-
Array(extension_blacklist).any? { |item| extension =~ /\A#{item}\z/i }
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
module CarrierWave
|
2
|
-
module Uploader
|
3
|
-
module ExtensionWhitelist
|
4
|
-
extend ActiveSupport::Concern
|
5
|
-
|
6
|
-
included do
|
7
|
-
before :cache, :check_extension_whitelist!
|
8
|
-
end
|
9
|
-
|
10
|
-
##
|
11
|
-
# Override this method in your uploader to provide a white list of extensions which
|
12
|
-
# are allowed to be uploaded. Compares the file's extension case insensitive.
|
13
|
-
# Furthermore, not only strings but Regexp are allowed as well.
|
14
|
-
#
|
15
|
-
# When using a Regexp in the white list, `\A` and `\z` are automatically added to
|
16
|
-
# the Regexp expression, also case insensitive.
|
17
|
-
#
|
18
|
-
# === Returns
|
19
|
-
#
|
20
|
-
# [NilClass, String, Regexp, Array[String, Regexp]] a white list of extensions which are allowed to be uploaded
|
21
|
-
#
|
22
|
-
# === Examples
|
23
|
-
#
|
24
|
-
# def extension_whitelist
|
25
|
-
# %w(jpg jpeg gif png)
|
26
|
-
# end
|
27
|
-
#
|
28
|
-
# Basically the same, but using a Regexp:
|
29
|
-
#
|
30
|
-
# def extension_whitelist
|
31
|
-
# [/jpe?g/, 'gif', 'png']
|
32
|
-
# end
|
33
|
-
#
|
34
|
-
def extension_whitelist; end
|
35
|
-
|
36
|
-
private
|
37
|
-
|
38
|
-
def check_extension_whitelist!(new_file)
|
39
|
-
extension = new_file.extension.to_s
|
40
|
-
if extension_whitelist && !whitelisted_extension?(extension)
|
41
|
-
raise CarrierWave::IntegrityError, I18n.translate(:"errors.messages.extension_whitelist_error", extension: new_file.extension.inspect, allowed_types: Array(extension_whitelist).join(", "))
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def whitelisted_extension?(extension)
|
46
|
-
downcase_extension = extension.downcase
|
47
|
-
Array(extension_whitelist).any? { |item| downcase_extension =~ /\A#{item}\z/i }
|
48
|
-
end
|
49
|
-
|
50
|
-
end # ExtensionWhitelist
|
51
|
-
end # Uploader
|
52
|
-
end # CarrierWave
|