Sha256: f65d7b8ff1fa354e95df286c7863bb597ef5562506c40652d16d464ad8536354
Contents?: true
Size: 1.1 KB
Versions: 337
Compression:
Stored size: 1.1 KB
Contents
require 'digest/sha1' require 'forwardable' module Bosh module Blobstore class Sha1VerifiableBlobstoreClient < BaseClient extend Forwardable def initialize(client) @client = client end def get(id, file = nil, options = {}) if options.has_key?(:sha1) expected_sha1 = options[:sha1] raise ArgumentError, 'sha1 must not be nil' unless expected_sha1 end result_file = @client.get(id, file, options) if expected_sha1 # Blobstore clients either modify passed in file # or return new temporary file check_sha1(expected_sha1, file || result_file) end result_file end def_delegators :@client, :create, :delete, :exists? private def check_sha1(expected_sha1, file_to_check) expected_sha1 = expected_sha1 actual_sha1 = Digest::SHA1.file(file_to_check.path).hexdigest unless expected_sha1 == actual_sha1 raise BlobstoreError, "sha1 mismatch expected=#{expected_sha1} actual=#{actual_sha1}" end end end end end
Version data entries
337 entries across 337 versions & 1 rubygems