Module: Gcloud::Storage::File::Verifier

Defined in:
lib/gcloud/storage/file/verifier.rb

Overview

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

Class Method Summary collapse

Class Method Details

.crc32c_for(local_file) ⇒ Object



59
60
61
62
63
# File 'lib/gcloud/storage/file/verifier.rb', line 59

def self.crc32c_for local_file
  ::File.open(Pathname(local_file).to_path, "rb") do |f|
    ::Digest::CRC32c.base64digest f.read
  end
end

.md5_for(local_file) ⇒ Object



53
54
55
56
57
# File 'lib/gcloud/storage/file/verifier.rb', line 53

def self.md5_for local_file
  ::File.open(Pathname(local_file).to_path, "rb") do |f|
    ::Digest::MD5.base64digest f.read
  end
end

.verify_crc32c(gcloud_file, local_file) ⇒ Object



49
50
51
# File 'lib/gcloud/storage/file/verifier.rb', line 49

def self.verify_crc32c gcloud_file, local_file
  gcloud_file.crc32c == crc32c_for(local_file)
end

.verify_crc32c!(gcloud_file, local_file) ⇒ Object



37
38
39
40
41
42
43
# File 'lib/gcloud/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
  if gcloud_digest != local_digest
    fail FileVerificationError.for_md5(gcloud_digest, local_digest)
  end
end

.verify_md5(gcloud_file, local_file) ⇒ Object



45
46
47
# File 'lib/gcloud/storage/file/verifier.rb', line 45

def self.verify_md5 gcloud_file, local_file
  gcloud_file.md5 == md5_for(local_file)
end

.verify_md5!(gcloud_file, local_file) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/gcloud/storage/file/verifier.rb', line 29

def self.verify_md5! gcloud_file, local_file
  gcloud_digest = gcloud_file.md5
  local_digest = md5_for local_file
  if gcloud_digest != local_digest
    fail FileVerificationError.for_md5(gcloud_digest, local_digest)
  end
end