Class: Shrine::Plugins::KitheChecksumSignatures

Inherits:
Object
  • Object
show all
Defined in:
lib/shrine/plugins/kithe_checksum_signatures.rb

Overview

Using the shrine signature and add_metadata plugins, ensure that the shrine standard digest/checksum signatures are recorded in metadata.

This plugin is NOT included in Kithe::AssetUploader by default, include it in your local uploader if desired.

We want to store md5 and sha1 checksums (legacy compat), as well as sha512 (more recent digital preservation recommendation: ocfl.io/draft/spec/#digests)

We only calculate them only on promotion action (not cache action), to avoid needlessly expensive double-computation, and because for direct uploads/backgrounding, we haven’t actually gotten the file in our hands to compute checksums until then anyway.

the add_metadata plugin’s metadata_method is used to make md5, sha1, and sha512 methods available on the Attacher. (They also end up delegated from the Asset model)

Class Method Summary collapse

Class Method Details

.configure(uploader, opts = {}) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/shrine/plugins/kithe_checksum_signatures.rb', line 24

def self.configure(uploader, opts = {})
  uploader.class_eval do
     do |io, derivative:nil, **context|
      if context[:action] != :cache && derivative.nil?
        {
          md5: calculate_signature(io, :md5),
          sha1: calculate_signature(io, :sha1),
          sha512: calculate_signature(io, :sha512)
        }
      end
    end
     :md5, :sha1, :sha512
  end
end

.load_dependencies(uploader) ⇒ Object



19
20
21
22
# File 'lib/shrine/plugins/kithe_checksum_signatures.rb', line 19

def self.load_dependencies(uploader, *)
  uploader.plugin :add_metadata
  uploader.plugin :signature
end