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

Version Path
blobstore_client-1.3262.24.0 lib/blobstore_client/sha1_verifiable_blobstore_client.rb
blobstore_client-1.3232.24.0 lib/blobstore_client/sha1_verifiable_blobstore_client.rb
blobstore_client-1.3232.14.0 lib/blobstore_client/sha1_verifiable_blobstore_client.rb
blobstore_client-1.3262.4.0 lib/blobstore_client/sha1_verifiable_blobstore_client.rb
blobstore_client-1.3262.0 lib/blobstore_client/sha1_verifiable_blobstore_client.rb
blobstore_client-1.3232.0 lib/blobstore_client/sha1_verifiable_blobstore_client.rb
blobstore_client-1.3215.4.0 lib/blobstore_client/sha1_verifiable_blobstore_client.rb
blobstore_client-1.3215.3.0 lib/blobstore_client/sha1_verifiable_blobstore_client.rb
blobstore_client-1.3215.0 lib/blobstore_client/sha1_verifiable_blobstore_client.rb
blobstore_client-1.3146.10.0 lib/blobstore_client/sha1_verifiable_blobstore_client.rb
blobstore_client-1.3213.0 lib/blobstore_client/sha1_verifiable_blobstore_client.rb
blobstore_client-1.3202.0 lib/blobstore_client/sha1_verifiable_blobstore_client.rb
blobstore_client-1.3200.0 lib/blobstore_client/sha1_verifiable_blobstore_client.rb
blobstore_client-1.3146.9.0 lib/blobstore_client/sha1_verifiable_blobstore_client.rb
blobstore_client-1.3197.0 lib/blobstore_client/sha1_verifiable_blobstore_client.rb
blobstore_client-1.3196.0 lib/blobstore_client/sha1_verifiable_blobstore_client.rb
blobstore_client-1.3146.8.0 lib/blobstore_client/sha1_verifiable_blobstore_client.rb
blobstore_client-1.3192.0 lib/blobstore_client/sha1_verifiable_blobstore_client.rb
blobstore_client-1.3146.7.0 lib/blobstore_client/sha1_verifiable_blobstore_client.rb
blobstore_client-1.3191.0 lib/blobstore_client/sha1_verifiable_blobstore_client.rb