module Bosh::Stemcell
  class OsImageUploader
    def initialize(dependencies = {})
      @digester = dependencies.fetch(:digester)
      @adapter = dependencies.fetch(:adapter)
    end

    def upload(bucket_name, os_image_path)
      digest = digester.file(os_image_path).hexdigest
      adapter.upload(
        bucket_name: bucket_name,
        key: digest,
        body: os_image_path,
        public: true,
      )
      digest
    end

    private

    attr_reader :digester, :adapter
  end
end