Class: Valkyrie::StorageAdapter::File

Inherits:
Dry::Struct
  • Object
show all
Defined in:
lib/valkyrie/storage_adapter.rb

Direct Known Subclasses

StreamFile

Instance Method Summary collapse

Instance Method Details

#checksum(digests:) ⇒ Array<Digest>

Parameters:

  • digests (Array<Digest>)

Returns:

  • (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_pathObject



75
76
77
# File 'lib/valkyrie/storage_adapter.rb', line 75

def disk_path
  Pathname.new(io.path)
end

#streamObject



71
72
73
# File 'lib/valkyrie/storage_adapter.rb', line 71

def stream
  io
end

#valid?(size: nil, digests:) ⇒ Boolean

Parameters:

  • size (Integer) (defaults to: nil)
  • digests (Array<Digest>)

Returns:

  • (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