card 1.19.3 → 1.19.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (190) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/VERSION +1 -1
  4. data/card.gemspec +1 -3
  5. data/db/migrate_core_cards/20160914132636_fix_mod_files.rb +25 -0
  6. data/lib/card.rb +0 -2
  7. data/lib/card/content/diff.rb +3 -4
  8. data/lib/card/format/error.rb +1 -1
  9. data/mod/admin/set/self/admin.rb +2 -2
  10. data/mod/admin/set/self/trash.rb +9 -3
  11. data/mod/basic_types/set/type/html.rb +1 -1
  12. data/mod/bootstrap/set/all/bootstrap/layout.rb +58 -0
  13. data/mod/bootstrap/spec/set/all/bootstrap/layout_spec.rb +32 -0
  14. data/mod/carrierwave/lib/carrier_wave/cardmount.rb +0 -2
  15. data/mod/carrierwave/set/abstract/attachment/upload_cache.rb +2 -1
  16. data/mod/core/set/all/stages.rb +6 -4
  17. data/mod/history/lib/card/act.rb +8 -7
  18. data/mod/history/set/all/history.rb +10 -8
  19. data/mod/machines/set/abstract/script.rb +1 -1
  20. data/mod/machines/set/type/css.rb +1 -1
  21. data/mod/pointer/set/abstract/01_pointer.rb +1 -1
  22. data/mod/standard/file/credit_image/image-icon.png +0 -0
  23. data/mod/standard/file/credit_image/image-large.png +0 -0
  24. data/mod/standard/file/credit_image/image-medium.png +0 -0
  25. data/mod/standard/file/credit_image/image-small.png +0 -0
  26. data/mod/standard/file/favicon/image-icon.png +0 -0
  27. data/mod/standard/file/favicon/image-large.png +0 -0
  28. data/mod/standard/file/favicon/image-medium.png +0 -0
  29. data/mod/standard/file/favicon/image-small.png +0 -0
  30. data/mod/standard/file/logo/image-icon.png +0 -0
  31. data/mod/standard/file/logo/image-large.png +0 -0
  32. data/mod/standard/file/logo/image-medium.png +0 -0
  33. data/mod/standard/file/logo/image-small.png +0 -0
  34. data/mod/standard/set/self/recent.rb +2 -2
  35. data/spec/lib/card/diff_spec.rb +9 -9
  36. metadata +19 -156
  37. data/vendor/carrierwave/.gitignore +0 -19
  38. data/vendor/carrierwave/.rubocop.yml +0 -262
  39. data/vendor/carrierwave/.travis.yml +0 -58
  40. data/vendor/carrierwave/CHANGELOG.md +0 -81
  41. data/vendor/carrierwave/CONTRIBUTING.md +0 -37
  42. data/vendor/carrierwave/Gemfile +0 -5
  43. data/vendor/carrierwave/README.md +0 -995
  44. data/vendor/carrierwave/Rakefile +0 -26
  45. data/vendor/carrierwave/carrierwave.gemspec +0 -45
  46. data/vendor/carrierwave/cucumber.yml +0 -2
  47. data/vendor/carrierwave/features/caching.feature +0 -28
  48. data/vendor/carrierwave/features/download.feature +0 -20
  49. data/vendor/carrierwave/features/file_storage.feature +0 -37
  50. data/vendor/carrierwave/features/file_storage_overridden_filename.feature +0 -38
  51. data/vendor/carrierwave/features/file_storage_overridden_store_dir.feature +0 -38
  52. data/vendor/carrierwave/features/file_storage_reversing_processor.feature +0 -43
  53. data/vendor/carrierwave/features/fixtures/bork.txt +0 -1
  54. data/vendor/carrierwave/features/fixtures/monkey.txt +0 -1
  55. data/vendor/carrierwave/features/fixtures/upcased_bork.txt +0 -1
  56. data/vendor/carrierwave/features/mount_activerecord.feature +0 -46
  57. data/vendor/carrierwave/features/step_definitions/activerecord_steps.rb +0 -20
  58. data/vendor/carrierwave/features/step_definitions/caching_steps.rb +0 -12
  59. data/vendor/carrierwave/features/step_definitions/datamapper_steps.rb +0 -27
  60. data/vendor/carrierwave/features/step_definitions/download_steps.rb +0 -8
  61. data/vendor/carrierwave/features/step_definitions/file_steps.rb +0 -51
  62. data/vendor/carrierwave/features/step_definitions/general_steps.rb +0 -102
  63. data/vendor/carrierwave/features/step_definitions/mount_steps.rb +0 -17
  64. data/vendor/carrierwave/features/step_definitions/store_steps.rb +0 -16
  65. data/vendor/carrierwave/features/support/activerecord.rb +0 -18
  66. data/vendor/carrierwave/features/support/env.rb +0 -19
  67. data/vendor/carrierwave/features/versions_basics.feature +0 -50
  68. data/vendor/carrierwave/features/versions_caching_from_versions.feature +0 -32
  69. data/vendor/carrierwave/features/versions_nested_versions.feature +0 -70
  70. data/vendor/carrierwave/features/versions_overridden_filename.feature +0 -51
  71. data/vendor/carrierwave/features/versions_overriden_store_dir.feature +0 -41
  72. data/vendor/carrierwave/gemfiles/rails-4-0-stable.gemfile +0 -5
  73. data/vendor/carrierwave/gemfiles/rails-4-1-stable.gemfile +0 -5
  74. data/vendor/carrierwave/gemfiles/rails-4-2-stable.gemfile +0 -5
  75. data/vendor/carrierwave/gemfiles/rails-master.gemfile +0 -11
  76. data/vendor/carrierwave/lib/carrierwave.rb +0 -93
  77. data/vendor/carrierwave/lib/carrierwave/compatibility/paperclip.rb +0 -103
  78. data/vendor/carrierwave/lib/carrierwave/error.rb +0 -8
  79. data/vendor/carrierwave/lib/carrierwave/locale/cs.yml +0 -14
  80. data/vendor/carrierwave/lib/carrierwave/locale/de.yml +0 -14
  81. data/vendor/carrierwave/lib/carrierwave/locale/el.yml +0 -14
  82. data/vendor/carrierwave/lib/carrierwave/locale/en.yml +0 -14
  83. data/vendor/carrierwave/lib/carrierwave/locale/es.yml +0 -14
  84. data/vendor/carrierwave/lib/carrierwave/locale/fr-CA.yml +0 -14
  85. data/vendor/carrierwave/lib/carrierwave/locale/fr.yml +0 -14
  86. data/vendor/carrierwave/lib/carrierwave/locale/id.yml +0 -14
  87. data/vendor/carrierwave/lib/carrierwave/locale/ja.yml +0 -14
  88. data/vendor/carrierwave/lib/carrierwave/locale/nb.yml +0 -14
  89. data/vendor/carrierwave/lib/carrierwave/locale/nl.yml +0 -14
  90. data/vendor/carrierwave/lib/carrierwave/locale/pl.yml +0 -14
  91. data/vendor/carrierwave/lib/carrierwave/locale/pt-BR.yml +0 -14
  92. data/vendor/carrierwave/lib/carrierwave/locale/pt-PT.yml +0 -14
  93. data/vendor/carrierwave/lib/carrierwave/locale/ru.yml +0 -14
  94. data/vendor/carrierwave/lib/carrierwave/locale/sk.yml +0 -14
  95. data/vendor/carrierwave/lib/carrierwave/locale/tr.yml +0 -14
  96. data/vendor/carrierwave/lib/carrierwave/locale/zh-CN.yml +0 -14
  97. data/vendor/carrierwave/lib/carrierwave/locale/zh-TW.yml +0 -14
  98. data/vendor/carrierwave/lib/carrierwave/mount.rb +0 -444
  99. data/vendor/carrierwave/lib/carrierwave/mounter.rb +0 -163
  100. data/vendor/carrierwave/lib/carrierwave/orm/activerecord.rb +0 -103
  101. data/vendor/carrierwave/lib/carrierwave/processing.rb +0 -2
  102. data/vendor/carrierwave/lib/carrierwave/processing/mini_magick.rb +0 -328
  103. data/vendor/carrierwave/lib/carrierwave/processing/rmagick.rb +0 -379
  104. data/vendor/carrierwave/lib/carrierwave/sanitized_file.rb +0 -348
  105. data/vendor/carrierwave/lib/carrierwave/storage.rb +0 -2
  106. data/vendor/carrierwave/lib/carrierwave/storage/abstract.rb +0 -43
  107. data/vendor/carrierwave/lib/carrierwave/storage/file.rb +0 -118
  108. data/vendor/carrierwave/lib/carrierwave/storage/fog.rb +0 -462
  109. data/vendor/carrierwave/lib/carrierwave/test/matchers.rb +0 -394
  110. data/vendor/carrierwave/lib/carrierwave/uploader.rb +0 -67
  111. data/vendor/carrierwave/lib/carrierwave/uploader/cache.rb +0 -207
  112. data/vendor/carrierwave/lib/carrierwave/uploader/callbacks.rb +0 -33
  113. data/vendor/carrierwave/lib/carrierwave/uploader/configuration.rb +0 -203
  114. data/vendor/carrierwave/lib/carrierwave/uploader/content_type_blacklist.rb +0 -48
  115. data/vendor/carrierwave/lib/carrierwave/uploader/content_type_whitelist.rb +0 -48
  116. data/vendor/carrierwave/lib/carrierwave/uploader/default_url.rb +0 -17
  117. data/vendor/carrierwave/lib/carrierwave/uploader/download.rb +0 -92
  118. data/vendor/carrierwave/lib/carrierwave/uploader/extension_blacklist.rb +0 -51
  119. data/vendor/carrierwave/lib/carrierwave/uploader/extension_whitelist.rb +0 -51
  120. data/vendor/carrierwave/lib/carrierwave/uploader/file_size.rb +0 -41
  121. data/vendor/carrierwave/lib/carrierwave/uploader/magic_mime_blacklist.rb +0 -94
  122. data/vendor/carrierwave/lib/carrierwave/uploader/magic_mime_whitelist.rb +0 -94
  123. data/vendor/carrierwave/lib/carrierwave/uploader/mountable.rb +0 -38
  124. data/vendor/carrierwave/lib/carrierwave/uploader/processing.rb +0 -88
  125. data/vendor/carrierwave/lib/carrierwave/uploader/proxy.rb +0 -86
  126. data/vendor/carrierwave/lib/carrierwave/uploader/remove.rb +0 -21
  127. data/vendor/carrierwave/lib/carrierwave/uploader/serialization.rb +0 -28
  128. data/vendor/carrierwave/lib/carrierwave/uploader/store.rb +0 -93
  129. data/vendor/carrierwave/lib/carrierwave/uploader/url.rb +0 -41
  130. data/vendor/carrierwave/lib/carrierwave/uploader/versions.rb +0 -295
  131. data/vendor/carrierwave/lib/carrierwave/utilities.rb +0 -6
  132. data/vendor/carrierwave/lib/carrierwave/utilities/uri.rb +0 -21
  133. data/vendor/carrierwave/lib/carrierwave/validations/active_model.rb +0 -78
  134. data/vendor/carrierwave/lib/carrierwave/version.rb +0 -3
  135. data/vendor/carrierwave/lib/generators/templates/uploader.rb +0 -49
  136. data/vendor/carrierwave/lib/generators/uploader_generator.rb +0 -7
  137. data/vendor/carrierwave/script/console +0 -10
  138. data/vendor/carrierwave/script/destroy +0 -14
  139. data/vendor/carrierwave/script/generate +0 -14
  140. data/vendor/carrierwave/spec/compatibility/paperclip_spec.rb +0 -138
  141. data/vendor/carrierwave/spec/fixtures/Uppercase.jpg +0 -1
  142. data/vendor/carrierwave/spec/fixtures/bork.ttxt +0 -1
  143. data/vendor/carrierwave/spec/fixtures/bork.txt +0 -1
  144. data/vendor/carrierwave/spec/fixtures/bork.txtt +0 -1
  145. data/vendor/carrierwave/spec/fixtures/case.JPG +0 -1
  146. data/vendor/carrierwave/spec/fixtures/landscape.jpg +0 -0
  147. data/vendor/carrierwave/spec/fixtures/multi_page.pdf +0 -0
  148. data/vendor/carrierwave/spec/fixtures/new.jpeg +0 -1
  149. data/vendor/carrierwave/spec/fixtures/new.txt +0 -1
  150. data/vendor/carrierwave/spec/fixtures/old.jpeg +0 -1
  151. data/vendor/carrierwave/spec/fixtures/old.txt +0 -1
  152. data/vendor/carrierwave/spec/fixtures/portrait.jpg +0 -0
  153. data/vendor/carrierwave/spec/fixtures/ruby.gif +0 -0
  154. data/vendor/carrierwave/spec/fixtures/sponsored.doc +0 -1
  155. data/vendor/carrierwave/spec/fixtures/test+.jpg +0 -1
  156. data/vendor/carrierwave/spec/fixtures/test.jpeg +0 -1
  157. data/vendor/carrierwave/spec/fixtures/test.jpg +0 -1
  158. data/vendor/carrierwave/spec/generators/uploader_generator_spec.rb +0 -19
  159. data/vendor/carrierwave/spec/mount_multiple_spec.rb +0 -913
  160. data/vendor/carrierwave/spec/mount_single_spec.rb +0 -793
  161. data/vendor/carrierwave/spec/orm/activerecord_spec.rb +0 -1556
  162. data/vendor/carrierwave/spec/processing/mini_magick_spec.rb +0 -210
  163. data/vendor/carrierwave/spec/processing/rmagick_spec.rb +0 -250
  164. data/vendor/carrierwave/spec/sanitized_file_spec.rb +0 -805
  165. data/vendor/carrierwave/spec/spec_helper.rb +0 -105
  166. data/vendor/carrierwave/spec/storage/file_spec.rb +0 -82
  167. data/vendor/carrierwave/spec/storage/fog_credentials.rb +0 -46
  168. data/vendor/carrierwave/spec/storage/fog_helper.rb +0 -428
  169. data/vendor/carrierwave/spec/storage/fog_spec.rb +0 -48
  170. data/vendor/carrierwave/spec/support/activerecord.rb +0 -31
  171. data/vendor/carrierwave/spec/support/file_utils_helper.rb +0 -15
  172. data/vendor/carrierwave/spec/uploader/cache_spec.rb +0 -324
  173. data/vendor/carrierwave/spec/uploader/callback_spec.rb +0 -30
  174. data/vendor/carrierwave/spec/uploader/configuration_spec.rb +0 -133
  175. data/vendor/carrierwave/spec/uploader/content_type_blacklist_spec.rb +0 -61
  176. data/vendor/carrierwave/spec/uploader/content_type_whitelist_spec.rb +0 -63
  177. data/vendor/carrierwave/spec/uploader/default_url_spec.rb +0 -77
  178. data/vendor/carrierwave/spec/uploader/download_spec.rb +0 -204
  179. data/vendor/carrierwave/spec/uploader/extension_blacklist_spec.rb +0 -112
  180. data/vendor/carrierwave/spec/uploader/extension_whitelist_spec.rb +0 -102
  181. data/vendor/carrierwave/spec/uploader/file_size_spec.rb +0 -52
  182. data/vendor/carrierwave/spec/uploader/mountable_spec.rb +0 -26
  183. data/vendor/carrierwave/spec/uploader/overrides_spec.rb +0 -71
  184. data/vendor/carrierwave/spec/uploader/paths_spec.rb +0 -18
  185. data/vendor/carrierwave/spec/uploader/processing_spec.rb +0 -159
  186. data/vendor/carrierwave/spec/uploader/proxy_spec.rb +0 -79
  187. data/vendor/carrierwave/spec/uploader/remove_spec.rb +0 -71
  188. data/vendor/carrierwave/spec/uploader/store_spec.rb +0 -400
  189. data/vendor/carrierwave/spec/uploader/url_spec.rb +0 -273
  190. data/vendor/carrierwave/spec/uploader/versions_spec.rb +0 -633
@@ -1,207 +0,0 @@
1
- module CarrierWave
2
-
3
- class FormNotMultipart < UploadError
4
- def message
5
- "You tried to assign a String or a Pathname to an uploader, for security reasons, this is not allowed.\n\n If this is a file upload, please check that your upload form is multipart encoded."
6
- end
7
- end
8
-
9
- class CacheCounter
10
- @@counter = 0
11
-
12
- def self.increment
13
- @@counter += 1
14
- end
15
- end
16
-
17
- ##
18
- # Generates a unique cache id for use in the caching system
19
- #
20
- # === Returns
21
- #
22
- # [String] a cache id in the format TIMEINT-PID-COUNTER-RND
23
- #
24
- def self.generate_cache_id
25
- [Time.now.utc.to_i,
26
- Process.pid,
27
- '%04d' % (CarrierWave::CacheCounter.increment % 1000),
28
- '%04d' % rand(9999)
29
- ].map(&:to_s).join('-')
30
- end
31
-
32
- module Uploader
33
- module Cache
34
- extend ActiveSupport::Concern
35
-
36
- include CarrierWave::Uploader::Callbacks
37
- include CarrierWave::Uploader::Configuration
38
-
39
- module ClassMethods
40
-
41
- ##
42
- # Removes cached files which are older than one day. You could call this method
43
- # from a rake task to clean out old cached files.
44
- #
45
- # You can call this method directly on the module like this:
46
- #
47
- # CarrierWave.clean_cached_files!
48
- #
49
- # === Note
50
- #
51
- # This only works as long as you haven't done anything funky with your cache_dir.
52
- # It's recommended that you keep cache files in one place only.
53
- #
54
- def clean_cached_files!(seconds=60*60*24)
55
- cache_storage.new(CarrierWave::Uploader::Base.new).clean_cache!(seconds)
56
- end
57
- end
58
-
59
- ##
60
- # Returns true if the uploader has been cached
61
- #
62
- # === Returns
63
- #
64
- # [Bool] whether the current file is cached
65
- #
66
- def cached?
67
- @cache_id
68
- end
69
-
70
- ##
71
- # Caches the remotely stored file
72
- #
73
- # This is useful when about to process images. Most processing solutions
74
- # require the file to be stored on the local filesystem.
75
- #
76
- def cache_stored_file!
77
- cache!
78
- end
79
-
80
- def sanitized_file
81
- _content = file.read
82
- if _content.is_a?(File) # could be if storage is Fog
83
- sanitized = CarrierWave::Storage::Fog.new(self).retrieve!(File.basename(_content.path))
84
- else
85
- sanitized = SanitizedFile.new :tempfile => StringIO.new(_content),
86
- :filename => File.basename(path), :content_type => file.content_type
87
- end
88
- sanitized
89
- end
90
-
91
- ##
92
- # Returns a String which uniquely identifies the currently cached file for later retrieval
93
- #
94
- # === Returns
95
- #
96
- # [String] a cache name, in the format TIMEINT-PID-COUNTER-RND/filename.txt
97
- #
98
- def cache_name
99
- File.join(cache_id, full_original_filename) if cache_id and original_filename
100
- end
101
-
102
- ##
103
- # Caches the given file. Calls process! to trigger any process callbacks.
104
- #
105
- # By default, cache!() uses copy_to(), which operates by copying the file
106
- # to the cache, then deleting the original file. If move_to_cache() is
107
- # overriden to return true, then cache!() uses move_to(), which simply
108
- # moves the file to the cache. Useful for large files.
109
- #
110
- # === Parameters
111
- #
112
- # [new_file (File, IOString, Tempfile)] any kind of file object
113
- #
114
- # === Raises
115
- #
116
- # [CarrierWave::FormNotMultipart] if the assigned parameter is a string
117
- #
118
- def cache!(new_file = sanitized_file)
119
- new_file = CarrierWave::SanitizedFile.new(new_file)
120
- return if new_file.empty?
121
-
122
- raise CarrierWave::FormNotMultipart if new_file.is_path? && ensure_multipart_form
123
-
124
- self.cache_id = CarrierWave.generate_cache_id unless cache_id
125
-
126
- @filename = new_file.filename
127
- self.original_filename = new_file.filename
128
-
129
- begin
130
- # first, create a workfile on which we perform processings
131
- if move_to_cache
132
- @file = new_file.move_to(File.expand_path(workfile_path, root), permissions, directory_permissions)
133
- else
134
- @file = new_file.copy_to(File.expand_path(workfile_path, root), permissions, directory_permissions)
135
- end
136
-
137
- with_callbacks(:cache, @file) do
138
- @file = cache_storage.cache!(@file)
139
- end
140
- ensure
141
- FileUtils.rm_rf(workfile_path(''))
142
- end
143
- end
144
-
145
- ##
146
- # Retrieves the file with the given cache_name from the cache.
147
- #
148
- # === Parameters
149
- #
150
- # [cache_name (String)] uniquely identifies a cache file
151
- #
152
- # === Raises
153
- #
154
- # [CarrierWave::InvalidParameter] if the cache_name is incorrectly formatted.
155
- #
156
- def retrieve_from_cache!(cache_name)
157
- with_callbacks(:retrieve_from_cache, cache_name) do
158
- self.cache_id, self.original_filename = cache_name.to_s.split('/', 2)
159
- @filename = original_filename
160
- @file = cache_storage.retrieve_from_cache!(full_filename(original_filename))
161
- end
162
- end
163
-
164
- ##
165
- # Calculates the path where the cache file should be stored.
166
- #
167
- # === Parameters
168
- #
169
- # [for_file (String)] name of the file <optional>
170
- #
171
- # === Returns
172
- #
173
- # [String] the cache path
174
- #
175
- def cache_path(for_file=full_filename(original_filename))
176
- File.join(*[cache_dir, @cache_id, for_file].compact)
177
- end
178
-
179
- private
180
-
181
- def workfile_path(for_file=original_filename)
182
- File.join(CarrierWave.tmp_path, @cache_id, version_name.to_s, for_file)
183
- end
184
-
185
- attr_reader :cache_id, :original_filename
186
-
187
- # We can override the full_original_filename method in other modules
188
- alias_method :full_original_filename, :original_filename
189
-
190
- def cache_id=(cache_id)
191
- # Earlier version used 3 part cache_id. Thus we should allow for
192
- # the cache_id to have both 3 part and 4 part formats.
193
- raise CarrierWave::InvalidParameter, "invalid cache id" unless cache_id =~ /\A[\d]+\-[\d]+(\-[\d]{4})?\-[\d]{4}\z/
194
- @cache_id = cache_id
195
- end
196
-
197
- def original_filename=(filename)
198
- raise CarrierWave::InvalidParameter, "invalid filename" if filename =~ CarrierWave::SanitizedFile.sanitize_regexp
199
- @original_filename = filename
200
- end
201
-
202
- def cache_storage
203
- @cache_storage ||= self.class.cache_storage.new(self)
204
- end
205
- end # Cache
206
- end # Uploader
207
- end # CarrierWave
@@ -1,33 +0,0 @@
1
- module CarrierWave
2
- module Uploader
3
- module Callbacks
4
- extend ActiveSupport::Concern
5
-
6
- included do
7
- class_attribute :_before_callbacks, :_after_callbacks,
8
- :instance_writer => false
9
- self._before_callbacks = Hash.new []
10
- self._after_callbacks = Hash.new []
11
- end
12
-
13
- def with_callbacks(kind, *args)
14
- self.class._before_callbacks[kind].each { |c| send c, *args }
15
- yield
16
- self.class._after_callbacks[kind].each { |c| send c, *args }
17
- end
18
-
19
- module ClassMethods
20
- def before(kind, callback)
21
- self._before_callbacks = self._before_callbacks.
22
- merge kind => _before_callbacks[kind] + [callback]
23
- end
24
-
25
- def after(kind, callback)
26
- self._after_callbacks = self._after_callbacks.
27
- merge kind => _after_callbacks[kind] + [callback]
28
- end
29
- end # ClassMethods
30
-
31
- end # Callbacks
32
- end # Uploader
33
- end # CarrierWave
@@ -1,203 +0,0 @@
1
- module CarrierWave
2
-
3
- module Uploader
4
- module Configuration
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
- class_attribute :_storage, :_cache_storage, :instance_writer => false
9
-
10
- add_config :root
11
- add_config :base_path
12
- add_config :asset_host
13
- add_config :permissions
14
- add_config :directory_permissions
15
- add_config :storage_engines
16
- add_config :store_dir
17
- add_config :cache_dir
18
- add_config :enable_processing
19
- add_config :ensure_multipart_form
20
- add_config :delete_tmp_file_after_storage
21
- add_config :move_to_cache
22
- add_config :move_to_store
23
- add_config :remove_previously_stored_files_after_update
24
-
25
- # fog
26
- add_config :fog_provider
27
- add_config :fog_attributes
28
- add_config :fog_credentials
29
- add_config :fog_directory
30
- add_config :fog_public
31
- add_config :fog_authenticated_url_expiration
32
- add_config :fog_use_ssl_for_aws
33
-
34
- # Mounting
35
- add_config :ignore_integrity_errors
36
- add_config :ignore_processing_errors
37
- add_config :ignore_download_errors
38
- add_config :validate_integrity
39
- add_config :validate_processing
40
- add_config :validate_download
41
- add_config :mount_on
42
- add_config :cache_only
43
-
44
- # set default values
45
- reset_config
46
- end
47
-
48
- module ClassMethods
49
-
50
- ##
51
- # Sets the storage engine to be used when storing files with this uploader.
52
- # Can be any class that implements a #store!(CarrierWave::SanitizedFile) and a #retrieve!
53
- # method. See lib/carrierwave/storage/file.rb for an example. Storage engines should
54
- # be added to CarrierWave::Uploader::Base.storage_engines so they can be referred
55
- # to by a symbol, which should be more convenient
56
- #
57
- # If no argument is given, it will simply return the currently used storage engine.
58
- #
59
- # === Parameters
60
- #
61
- # [storage (Symbol, Class)] The storage engine to use for this uploader
62
- #
63
- # === Returns
64
- #
65
- # [Class] the storage engine to be used with this uploader
66
- #
67
- # === Examples
68
- #
69
- # storage :file
70
- # storage CarrierWave::Storage::File
71
- # storage MyCustomStorageEngine
72
- #
73
- def storage(storage = nil)
74
- case storage
75
- when Symbol
76
- if storage_engine = storage_engines[storage]
77
- self._storage = eval storage_engine
78
- else
79
- raise CarrierWave::UnknownStorageError, "Unknown storage: #{storage}"
80
- end
81
- when nil
82
- storage
83
- else
84
- self._storage = storage
85
- end
86
- _storage
87
- end
88
- alias_method :storage=, :storage
89
-
90
- ##
91
- # Sets the cache storage engine to be used when storing cache files with this uploader.
92
- # Same as .storage except for required methods being #cache!(CarrierWave::SanitizedFile),
93
- # #retrieve_from_cache! and #delete_dir!.
94
- #
95
- # === Parameters
96
- #
97
- # [storage (Symbol, Class)] The cache storage engine to use for this uploader
98
- #
99
- # === Returns
100
- #
101
- # [Class] the cache storage engine to be used with this uploader
102
- #
103
- # === Examples
104
- #
105
- # cache_storage :file
106
- # cache_storage CarrierWave::Storage::File
107
- # cache_storage MyCustomStorageEngine
108
- #
109
- def cache_storage(storage = nil)
110
- if storage
111
- self._cache_storage = storage.is_a?(Symbol) ? eval(storage_engines[storage]) : storage
112
- end
113
- _cache_storage
114
- end
115
- alias_method :cache_storage=, :cache_storage
116
-
117
- def add_config(name)
118
- class_eval <<-RUBY, __FILE__, __LINE__ + 1
119
- def self.eager_load_fog(fog_credentials)
120
- # see #1198. This will hopefully no longer be necessary after fog 2.0
121
- require self.fog_provider
122
- require 'carrierwave/storage/fog'
123
- Fog::Storage.new(fog_credentials) if fog_credentials.present?
124
- end
125
-
126
- def self.#{name}(value=nil)
127
- @#{name} = value if value
128
- eager_load_fog(value) if value && '#{name}' == 'fog_credentials'
129
- return @#{name} if self.object_id == #{self.object_id} || defined?(@#{name})
130
- name = superclass.#{name}
131
- return nil if name.nil? && !instance_variable_defined?("@#{name}")
132
- @#{name} = name && !name.is_a?(Module) && !name.is_a?(Symbol) && !name.is_a?(Numeric) && !name.is_a?(TrueClass) && !name.is_a?(FalseClass) ? name.dup : name
133
- end
134
-
135
- def self.#{name}=(value)
136
- eager_load_fog(value) if '#{name}' == 'fog_credentials' && value.present?
137
- @#{name} = value
138
- end
139
-
140
- def #{name}=(value)
141
- self.class.eager_load_fog(value) if '#{name}' == 'fog_credentials' && value.present?
142
- @#{name} = value
143
- end
144
-
145
- def #{name}
146
- value = @#{name} if instance_variable_defined?(:@#{name})
147
- value = self.class.#{name} unless instance_variable_defined?(:@#{name})
148
- if value.instance_of?(Proc)
149
- value.arity >= 1 ? value.call(self) : value.call
150
- else
151
- value
152
- end
153
- end
154
- RUBY
155
- end
156
-
157
- def configure
158
- yield self
159
- end
160
-
161
- ##
162
- # sets configuration back to default
163
- #
164
- def reset_config
165
- configure do |config|
166
- config.permissions = 0644
167
- config.directory_permissions = 0755
168
- config.storage_engines = {
169
- :file => "CarrierWave::Storage::File",
170
- :fog => "CarrierWave::Storage::Fog"
171
- }
172
- config.storage = :file
173
- config.cache_storage = :file
174
- config.fog_provider = 'fog'
175
- config.fog_attributes = {}
176
- config.fog_credentials = {}
177
- config.fog_public = true
178
- config.fog_authenticated_url_expiration = 600
179
- config.fog_use_ssl_for_aws = true
180
- config.store_dir = 'uploads'
181
- config.cache_dir = 'uploads/tmp'
182
- config.delete_tmp_file_after_storage = true
183
- config.move_to_cache = false
184
- config.move_to_store = false
185
- config.remove_previously_stored_files_after_update = true
186
- config.ignore_integrity_errors = true
187
- config.ignore_processing_errors = true
188
- config.ignore_download_errors = true
189
- config.validate_integrity = true
190
- config.validate_processing = true
191
- config.validate_download = true
192
- config.root = lambda { CarrierWave.root }
193
- config.base_path = CarrierWave.base_path
194
- config.enable_processing = true
195
- config.ensure_multipart_form = true
196
- end
197
- end
198
- end
199
-
200
- end
201
- end
202
- end
203
-
@@ -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