carrierwave 1.3.1 → 3.0.5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of carrierwave might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/README.md +238 -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 +15 -55
- data/lib/carrierwave/processing/mini_magick.rb +108 -123
- data/lib/carrierwave/processing/rmagick.rb +20 -18
- data/lib/carrierwave/processing/vips.rb +284 -0
- data/lib/carrierwave/processing.rb +1 -0
- data/lib/carrierwave/sanitized_file.rb +66 -73
- data/lib/carrierwave/storage/abstract.rb +5 -5
- data/lib/carrierwave/storage/file.rb +6 -5
- data/lib/carrierwave/storage/fog.rb +101 -64
- 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 -80
- 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 +153 -105
- 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 +104 -38
- 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
data/lib/carrierwave.rb
CHANGED
@@ -25,16 +25,7 @@ module CarrierWave
|
|
25
25
|
|
26
26
|
end
|
27
27
|
|
28
|
-
if defined?(
|
29
|
-
|
30
|
-
CarrierWave.root = Merb.dir_for(:public)
|
31
|
-
Merb::BootLoader.before_app_loads do
|
32
|
-
# Setup path for uploaders and load all of them before classes are loaded
|
33
|
-
Merb.push_path(:uploaders, Merb.root / 'app' / 'uploaders', '*.rb')
|
34
|
-
Dir.glob(File.join(Merb.load_paths[:uploaders])).each {|f| require f }
|
35
|
-
end
|
36
|
-
|
37
|
-
elsif defined?(Jets)
|
28
|
+
if defined?(Jets)
|
38
29
|
|
39
30
|
module CarrierWave
|
40
31
|
class Turbine < Jets::Turbine
|
@@ -72,6 +63,10 @@ elsif defined?(Rails)
|
|
72
63
|
require 'carrierwave/orm/activerecord'
|
73
64
|
end
|
74
65
|
end
|
66
|
+
|
67
|
+
config.before_eager_load do
|
68
|
+
CarrierWave::Storage::Fog.eager_load
|
69
|
+
end
|
75
70
|
end
|
76
71
|
end
|
77
72
|
|
@@ -80,13 +75,14 @@ elsif defined?(Sinatra)
|
|
80
75
|
CarrierWave.root = File.join(PADRINO_ROOT, "public")
|
81
76
|
else
|
82
77
|
|
83
|
-
CarrierWave.root =
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
78
|
+
CarrierWave.root =
|
79
|
+
if Sinatra::Application.respond_to?(:public_folder)
|
80
|
+
# Sinatra >= 1.3
|
81
|
+
Sinatra::Application.public_folder
|
82
|
+
else
|
83
|
+
# Sinatra < 1.3
|
84
|
+
Sinatra::Application.public
|
85
|
+
end
|
90
86
|
end
|
91
87
|
end
|
92
88
|
|
@@ -33,15 +33,15 @@ class <%= class_name %>Uploader < CarrierWave::Uploader::Base
|
|
33
33
|
# process resize_to_fit: [50, 50]
|
34
34
|
# end
|
35
35
|
|
36
|
-
# Add
|
36
|
+
# Add an allowlist of extensions which are allowed to be uploaded.
|
37
37
|
# For images you might use something like this:
|
38
|
-
# def
|
38
|
+
# def extension_allowlist
|
39
39
|
# %w(jpg jpeg gif png)
|
40
40
|
# end
|
41
41
|
|
42
42
|
# Override the filename of the uploaded files:
|
43
43
|
# Avoid using model.id or version_name here, see uploader/store.rb for details.
|
44
44
|
# def filename
|
45
|
-
# "something.jpg"
|
45
|
+
# "something.jpg"
|
46
46
|
# end
|
47
47
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class UploaderGenerator < Rails::Generators::NamedBase
|
2
|
-
source_root File.expand_path(
|
2
|
+
source_root File.expand_path('templates', __dir__)
|
3
3
|
|
4
4
|
def create_uploader_file
|
5
|
-
template "uploader.rb", File.join('app/uploaders', class_path, "#{file_name}_uploader.rb")
|
5
|
+
template "uploader.rb.erb", File.join('app/uploaders', class_path, "#{file_name}_uploader.rb")
|
6
6
|
end
|
7
|
-
end
|
7
|
+
end
|
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.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonas Nicklas
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-11-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,70 +16,84 @@ 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
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
62
|
-
type: :
|
61
|
+
version: 1.0.0
|
62
|
+
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 1.0.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: addressable
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
76
|
-
type: :
|
75
|
+
version: '2.6'
|
76
|
+
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: '2.6'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: ssrf_filter
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: cucumber
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +122,34 @@ dependencies:
|
|
108
122
|
- - "~>"
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '3.4'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rspec-retry
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rubocop
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '1.28'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '1.28'
|
111
153
|
- !ruby/object:Gem::Dependency
|
112
154
|
name: webmock
|
113
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,14 +184,20 @@ dependencies:
|
|
142
184
|
requirements:
|
143
185
|
- - "~>"
|
144
186
|
- !ruby/object:Gem::Version
|
145
|
-
version: 1.7
|
187
|
+
version: '1.7'
|
188
|
+
- - "!="
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: 1.12.1
|
146
191
|
type: :development
|
147
192
|
prerelease: false
|
148
193
|
version_requirements: !ruby/object:Gem::Requirement
|
149
194
|
requirements:
|
150
195
|
- - "~>"
|
151
196
|
- !ruby/object:Gem::Version
|
152
|
-
version: 1.7
|
197
|
+
version: '1.7'
|
198
|
+
- - "!="
|
199
|
+
- !ruby/object:Gem::Version
|
200
|
+
version: 1.12.1
|
153
201
|
- !ruby/object:Gem::Dependency
|
154
202
|
name: fog-local
|
155
203
|
requirement: !ruby/object:Gem::Requirement
|
@@ -198,14 +246,14 @@ dependencies:
|
|
198
246
|
requirements:
|
199
247
|
- - ">="
|
200
248
|
- !ruby/object:Gem::Version
|
201
|
-
version: '
|
249
|
+
version: '2.16'
|
202
250
|
type: :development
|
203
251
|
prerelease: false
|
204
252
|
version_requirements: !ruby/object:Gem::Requirement
|
205
253
|
requirements:
|
206
254
|
- - ">="
|
207
255
|
- !ruby/object:Gem::Version
|
208
|
-
version: '
|
256
|
+
version: '2.16'
|
209
257
|
- !ruby/object:Gem::Dependency
|
210
258
|
name: timecop
|
211
259
|
requirement: !ruby/object:Gem::Requirement
|
@@ -248,6 +296,20 @@ dependencies:
|
|
248
296
|
- - ">="
|
249
297
|
- !ruby/object:Gem::Version
|
250
298
|
version: '0'
|
299
|
+
- !ruby/object:Gem::Dependency
|
300
|
+
name: pry-byebug
|
301
|
+
requirement: !ruby/object:Gem::Requirement
|
302
|
+
requirements:
|
303
|
+
- - ">="
|
304
|
+
- !ruby/object:Gem::Version
|
305
|
+
version: '0'
|
306
|
+
type: :development
|
307
|
+
prerelease: false
|
308
|
+
version_requirements: !ruby/object:Gem::Requirement
|
309
|
+
requirements:
|
310
|
+
- - ">="
|
311
|
+
- !ruby/object:Gem::Version
|
312
|
+
version: '0'
|
251
313
|
description: Upload files in your Ruby applications, map them to a range of ORMs,
|
252
314
|
store them on different backends.
|
253
315
|
email:
|
@@ -260,6 +322,8 @@ files:
|
|
260
322
|
- README.md
|
261
323
|
- lib/carrierwave.rb
|
262
324
|
- lib/carrierwave/compatibility/paperclip.rb
|
325
|
+
- lib/carrierwave/downloader/base.rb
|
326
|
+
- lib/carrierwave/downloader/remote_file.rb
|
263
327
|
- lib/carrierwave/error.rb
|
264
328
|
- lib/carrierwave/locale/en.yml
|
265
329
|
- lib/carrierwave/mount.rb
|
@@ -268,6 +332,7 @@ files:
|
|
268
332
|
- lib/carrierwave/processing.rb
|
269
333
|
- lib/carrierwave/processing/mini_magick.rb
|
270
334
|
- lib/carrierwave/processing/rmagick.rb
|
335
|
+
- lib/carrierwave/processing/vips.rb
|
271
336
|
- lib/carrierwave/sanitized_file.rb
|
272
337
|
- lib/carrierwave/storage.rb
|
273
338
|
- lib/carrierwave/storage/abstract.rb
|
@@ -278,12 +343,13 @@ files:
|
|
278
343
|
- lib/carrierwave/uploader/cache.rb
|
279
344
|
- lib/carrierwave/uploader/callbacks.rb
|
280
345
|
- lib/carrierwave/uploader/configuration.rb
|
281
|
-
- lib/carrierwave/uploader/
|
282
|
-
- lib/carrierwave/uploader/
|
346
|
+
- lib/carrierwave/uploader/content_type_allowlist.rb
|
347
|
+
- lib/carrierwave/uploader/content_type_denylist.rb
|
283
348
|
- lib/carrierwave/uploader/default_url.rb
|
349
|
+
- lib/carrierwave/uploader/dimension.rb
|
284
350
|
- lib/carrierwave/uploader/download.rb
|
285
|
-
- lib/carrierwave/uploader/
|
286
|
-
- lib/carrierwave/uploader/
|
351
|
+
- lib/carrierwave/uploader/extension_allowlist.rb
|
352
|
+
- lib/carrierwave/uploader/extension_denylist.rb
|
287
353
|
- lib/carrierwave/uploader/file_size.rb
|
288
354
|
- lib/carrierwave/uploader/mountable.rb
|
289
355
|
- lib/carrierwave/uploader/processing.rb
|
@@ -294,16 +360,17 @@ files:
|
|
294
360
|
- lib/carrierwave/uploader/url.rb
|
295
361
|
- lib/carrierwave/uploader/versions.rb
|
296
362
|
- lib/carrierwave/utilities.rb
|
363
|
+
- lib/carrierwave/utilities/file_name.rb
|
297
364
|
- lib/carrierwave/utilities/uri.rb
|
298
365
|
- lib/carrierwave/validations/active_model.rb
|
299
366
|
- lib/carrierwave/version.rb
|
300
|
-
- lib/generators/templates/uploader.rb
|
367
|
+
- lib/generators/templates/uploader.rb.erb
|
301
368
|
- lib/generators/uploader_generator.rb
|
302
369
|
homepage: https://github.com/carrierwaveuploader/carrierwave
|
303
370
|
licenses:
|
304
371
|
- MIT
|
305
372
|
metadata: {}
|
306
|
-
post_install_message:
|
373
|
+
post_install_message:
|
307
374
|
rdoc_options:
|
308
375
|
- "--main"
|
309
376
|
require_paths:
|
@@ -312,16 +379,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
312
379
|
requirements:
|
313
380
|
- - ">="
|
314
381
|
- !ruby/object:Gem::Version
|
315
|
-
version: 2.
|
382
|
+
version: 2.5.0
|
316
383
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
317
384
|
requirements:
|
318
385
|
- - ">="
|
319
386
|
- !ruby/object:Gem::Version
|
320
387
|
version: '0'
|
321
388
|
requirements: []
|
322
|
-
|
323
|
-
|
324
|
-
signing_key:
|
389
|
+
rubygems_version: 3.4.10
|
390
|
+
signing_key:
|
325
391
|
specification_version: 4
|
326
392
|
summary: Ruby file upload library
|
327
393
|
test_files: []
|
@@ -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
|