Sha256: b9ac841a8d36546caeb067bfdaf7d7231e816d87f4961d5dce7faf59e7dd2b12

Contents?: true

Size: 1.58 KB

Versions: 219

Compression:

Stored size: 1.58 KB

Contents

require 'kconv'

module DPL
  class Provider
    class GCS < Provider
      requires 'gstore'
      requires 'mime-types', version: '~> 2.0'

      def needs_key?
        false
      end

      def client
        @client ||= GStore::Client.new(
          :access_key => option(:access_key_id),
          :secret_key => option(:secret_access_key)
        )
      end

      def check_auth
        log "Logging in with Access Key: #{option(:access_key_id)[-4..-1].rjust(20, '*')}"
      end

      def upload_path(filename)
        [options[:upload_dir], filename].compact.join("/")
      end

      def push_app
        glob_args = ["**/*"]
        glob_args << File::FNM_DOTMATCH if options[:dot_match]
        Dir.chdir(options.fetch(:local_dir, Dir.pwd)) do
          Dir.glob(*glob_args) do |filename|
            next if File.directory?(filename)
            content_type = MIME::Types.type_for(filename).first.to_s
            opts                  = { :"Content-Type" => content_type }.merge(encoding_option_for(filename))
            opts["Cache-Control"] = options[:cache_control] if options[:cache_control]
            opts["x-goog-acl"]    = options[:acl] if options[:acl]

            client.put_object(
              option(:bucket),
              upload_path(filename),
              { :data => File.read(filename), :headers => opts }
            )
          end
        end
      end

      private
      def encoding_option_for(path)
        if detect_encoding? && encoding_for(path)
          {"Content-Encoding" => encoding_for(path)}
        else
          {}
        end
      end

    end
  end
end

Version data entries

219 entries across 219 versions & 2 rubygems

Version Path
dpl-1.8.28.travis.1806.3 lib/dpl/provider/gcs.rb
dpl-1.8.27 lib/dpl/provider/gcs.rb
dpl-1.8.28.travis.1787.3 lib/dpl/provider/gcs.rb
dpl-1.8.27.travis.1786.3 lib/dpl/provider/gcs.rb
dpl-1.8.27.travis.1783.3 lib/dpl/provider/gcs.rb
dpl-1.8.26 lib/dpl/provider/gcs.rb
dpl-1.8.26.travis.1779.3 lib/dpl/provider/gcs.rb
dpl-1.8.26.travis.1777.3 lib/dpl/provider/gcs.rb
dpl-1.8.26.travis.1776.3 lib/dpl/provider/gcs.rb
dpl-1.8.26.travis.1775.3 lib/dpl/provider/gcs.rb
dpl-1.8.26.travis.1771.3 lib/dpl/provider/gcs.rb
dpl-1.8.26.travis.1765.3 lib/dpl/provider/gcs.rb
dpl-1.8.26.travis.1759.3 lib/dpl/provider/gcs.rb
dpl-1.8.26.travis.1753.3 lib/dpl/provider/gcs.rb
dpl-1.8.25.travis.1743.3 lib/dpl/provider/gcs.rb
dpl-1.8.25 lib/dpl/provider/gcs.rb
dpl-1.8.24 lib/dpl/provider/gcs.rb
dpl-1.8.24.travis.1718.3 lib/dpl/provider/gcs.rb
dpl-1.8.24.travis.1715.3 lib/dpl/provider/gcs.rb
dpl-1.8.24.travis.1709.3 lib/dpl/provider/gcs.rb