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>
78 79 80 81 82 83 84 85 |
# File 'lib/valkyrie/storage_adapter.rb', line 78 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
72 73 74 |
# File 'lib/valkyrie/storage_adapter.rb', line 72 def disk_path Pathname.new(io.path) end |
#stream ⇒ Object
68 69 70 |
# File 'lib/valkyrie/storage_adapter.rb', line 68 def stream io end |
#valid?(size: nil, digests:) ⇒ Boolean
90 91 92 93 94 95 96 |
# File 'lib/valkyrie/storage_adapter.rb', line 90 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 |