carrierwave 1.3.4 → 3.1.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/README.md +278 -86
- 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 +169 -77
- data/lib/carrierwave/orm/activerecord.rb +23 -58
- data/lib/carrierwave/processing/mini_magick.rb +137 -123
- data/lib/carrierwave/processing/rmagick.rb +47 -20
- data/lib/carrierwave/processing/vips.rb +315 -0
- data/lib/carrierwave/processing.rb +1 -0
- data/lib/carrierwave/sanitized_file.rb +83 -70
- data/lib/carrierwave/storage/abstract.rb +5 -5
- data/lib/carrierwave/storage/file.rb +6 -5
- data/lib/carrierwave/storage/fog.rb +114 -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 +42 -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 +45 -7
- data/lib/carrierwave/uploader/proxy.rb +17 -4
- data/lib/carrierwave/uploader/serialization.rb +1 -1
- data/lib/carrierwave/uploader/store.rb +73 -7
- data/lib/carrierwave/uploader/url.rb +7 -4
- data/lib/carrierwave/uploader/versions.rb +161 -111
- 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 +22 -17
- data/lib/generators/templates/{uploader.rb → uploader.rb.erb} +5 -4
- data/lib/generators/uploader_generator.rb +3 -3
- metadata +94 -47
- 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
|
@@ -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
|