module Google::Cloud::Storage::File::Verifier

@private Verifies downloaded files by creating an MD5 or CRC32c hash digest and comparing the value to the one from the Storage API.

Public Class Methods

crc32c_for(local_file) click to toggle source
# File lib/google/cloud/storage/file/verifier.rb, line 65
def self.crc32c_for local_file
  if local_file.respond_to? :to_path
    ::File.open Pathname(local_file).to_path, "rb" do |f|
      ::Digest::CRC32c.file(f).base64digest
    end
  else # StringIO
    local_file.rewind
    crc32c = ::Digest::CRC32c.base64digest local_file.read
    local_file.rewind
    crc32c
  end
end
md5_for(local_file) click to toggle source
# File lib/google/cloud/storage/file/verifier.rb, line 52
def self.md5_for local_file
  if local_file.respond_to? :to_path
    ::File.open Pathname(local_file).to_path, "rb" do |f|
      ::Digest::MD5.file(f).base64digest
    end
  else # StringIO
    local_file.rewind
    md5 = ::Digest::MD5.base64digest local_file.read
    local_file.rewind
    md5
  end
end
verify_crc32c(gcloud_file, local_file) click to toggle source
# File lib/google/cloud/storage/file/verifier.rb, line 48
def self.verify_crc32c gcloud_file, local_file
  gcloud_file.crc32c == crc32c_for(local_file)
end
verify_crc32c!(gcloud_file, local_file) click to toggle source
# File lib/google/cloud/storage/file/verifier.rb, line 37
def self.verify_crc32c! gcloud_file, local_file
  gcloud_digest = gcloud_file.crc32c
  local_digest = crc32c_for local_file
  return if gcloud_digest == local_digest
  raise FileVerificationError.for_crc32c(gcloud_digest, local_digest)
end
verify_md5(gcloud_file, local_file) click to toggle source
# File lib/google/cloud/storage/file/verifier.rb, line 44
def self.verify_md5 gcloud_file, local_file
  gcloud_file.md5 == md5_for(local_file)
end
verify_md5!(gcloud_file, local_file) click to toggle source
# File lib/google/cloud/storage/file/verifier.rb, line 30
def self.verify_md5! gcloud_file, local_file
  gcloud_digest = gcloud_file.md5
  local_digest = md5_for local_file
  return if gcloud_digest == local_digest
  raise FileVerificationError.for_md5(gcloud_digest, local_digest)
end