Module: Shrine::Plugins::ZipGuard
- Defined in:
- lib/shrine/plugins/zip_guard.rb
Defined Under Namespace
Modules: AttacherMethods
Classes: EncryptedZipError, Error, MissingFileError
Class Method Summary
collapse
Class Method Details
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
# File 'lib/shrine/plugins/zip_guard.rb', line 95
def self.configure(uploader, **opts)
uploader.opts[:zip_guard] = {
fallback: opts[:fallback],
required_files: opts[:required_files]
}
return unless opts[:required_files]
uploader::Attacher.derivatives do |original|
ZipGuard.with_zip(original, required_files: opts[:required_files]) do |_zip_file|
{}
end
end
end
|
.load_dependencies(uploader) ⇒ Object
110
111
112
113
|
# File 'lib/shrine/plugins/zip_guard.rb', line 110
def self.load_dependencies(uploader, **)
uploader.plugin :derivatives
uploader.plugin :validation
end
|
.with_zip(original, required_files: nil) ⇒ Object
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/shrine/plugins/zip_guard.rb', line 22
def with_zip(original, required_files: nil, &)
return yield(nil) unless zip?(original)
Zip::File.open(original.path) do |zip_file|
raise EncryptedZipError if zip_file.any?(&:encrypted?)
if required_files
Array(required_files).each do |pattern|
raise MissingFileError, pattern unless zip_file.glob(pattern).any?
end
end
yield zip_file
end
end
|