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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +278 -86
  3. data/lib/carrierwave/compatibility/paperclip.rb +4 -2
  4. data/lib/carrierwave/downloader/base.rb +101 -0
  5. data/lib/carrierwave/downloader/remote_file.rb +68 -0
  6. data/lib/carrierwave/locale/en.yml +9 -6
  7. data/lib/carrierwave/mount.rb +53 -61
  8. data/lib/carrierwave/mounter.rb +169 -77
  9. data/lib/carrierwave/orm/activerecord.rb +23 -58
  10. data/lib/carrierwave/processing/mini_magick.rb +137 -123
  11. data/lib/carrierwave/processing/rmagick.rb +47 -20
  12. data/lib/carrierwave/processing/vips.rb +315 -0
  13. data/lib/carrierwave/processing.rb +1 -0
  14. data/lib/carrierwave/sanitized_file.rb +83 -70
  15. data/lib/carrierwave/storage/abstract.rb +5 -5
  16. data/lib/carrierwave/storage/file.rb +6 -5
  17. data/lib/carrierwave/storage/fog.rb +114 -62
  18. data/lib/carrierwave/storage.rb +1 -0
  19. data/lib/carrierwave/test/matchers.rb +11 -7
  20. data/lib/carrierwave/uploader/cache.rb +40 -24
  21. data/lib/carrierwave/uploader/callbacks.rb +1 -1
  22. data/lib/carrierwave/uploader/configuration.rb +42 -19
  23. data/lib/carrierwave/uploader/content_type_allowlist.rb +62 -0
  24. data/lib/carrierwave/uploader/content_type_denylist.rb +62 -0
  25. data/lib/carrierwave/uploader/dimension.rb +66 -0
  26. data/lib/carrierwave/uploader/download.rb +2 -123
  27. data/lib/carrierwave/uploader/extension_allowlist.rb +63 -0
  28. data/lib/carrierwave/uploader/extension_denylist.rb +64 -0
  29. data/lib/carrierwave/uploader/file_size.rb +2 -2
  30. data/lib/carrierwave/uploader/mountable.rb +6 -0
  31. data/lib/carrierwave/uploader/processing.rb +45 -7
  32. data/lib/carrierwave/uploader/proxy.rb +17 -4
  33. data/lib/carrierwave/uploader/serialization.rb +1 -1
  34. data/lib/carrierwave/uploader/store.rb +73 -7
  35. data/lib/carrierwave/uploader/url.rb +7 -4
  36. data/lib/carrierwave/uploader/versions.rb +161 -111
  37. data/lib/carrierwave/uploader.rb +10 -17
  38. data/lib/carrierwave/utilities/file_name.rb +47 -0
  39. data/lib/carrierwave/utilities/uri.rb +14 -11
  40. data/lib/carrierwave/utilities.rb +1 -0
  41. data/lib/carrierwave/validations/active_model.rb +7 -9
  42. data/lib/carrierwave/version.rb +1 -1
  43. data/lib/carrierwave.rb +22 -17
  44. data/lib/generators/templates/{uploader.rb → uploader.rb.erb} +5 -4
  45. data/lib/generators/uploader_generator.rb +3 -3
  46. metadata +94 -47
  47. data/lib/carrierwave/uploader/content_type_blacklist.rb +0 -48
  48. data/lib/carrierwave/uploader/content_type_whitelist.rb +0 -48
  49. data/lib/carrierwave/uploader/extension_blacklist.rb +0 -51
  50. 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