Class: Valkyrie::StorageAdapter::File
- Inherits:
-
Dry::Struct
- Object
- Dry::Struct
- Valkyrie::StorageAdapter::File
- Defined in:
- lib/valkyrie/storage_adapter.rb
Direct Known Subclasses
Instance Method Summary collapse
- #checksum(digests:) ⇒ Array<Digest>
- #disk_path ⇒ Object
- #stream ⇒ Object
- #valid?(size: nil, digests:) ⇒ Boolean
Instance Method Details
#checksum(digests:) ⇒ Array<Digest>
81 82 83 84 85 86 87 88 |
# File 'lib/valkyrie/storage_adapter.rb', line 81 def checksum(digests:) io.rewind while (chunk = io.read(4096)) digests.each { |digest| digest.update(chunk) } end digests.map(&:to_s) end |
#disk_path ⇒ Object
75 76 77 |
# File 'lib/valkyrie/storage_adapter.rb', line 75 def disk_path Pathname.new(io.path) end |
#stream ⇒ Object
71 72 73 |
# File 'lib/valkyrie/storage_adapter.rb', line 71 def stream io end |
#valid?(size: nil, digests:) ⇒ Boolean
93 94 95 96 97 98 99 |
# File 'lib/valkyrie/storage_adapter.rb', line 93 def valid?(size: nil, digests:) return false if size && io.size.to_i != size.to_i calc_digests = checksum(digests: digests.keys.map { |alg| Digest(alg.upcase).new }) return false unless digests.values == calc_digests true end |