Sha256: 77454517c38b52cc6936c9c2ff69f9b5a2f1ce3cd4088e9adec298dfe1b93ba5

Contents?: true

Size: 1.59 KB

Versions: 3

Compression:

Stored size: 1.59 KB

Contents

require 'aws-sdk-resources'

# Handle sFTP transfers for Remote class
module RestFtpDaemon
  class RemoteS3 < Remote

    # Class options
    attr_reader :client
    attr_reader :target

    def prepare
      log_debug "RemoteS3.prepare target[#{@target.inspect}]"
    end

    def connect
      super

      # Connect init
      log_debug "RemoteS3.connect region[#{target.aws_region}] id[#{target.aws_id}]"

      # Debug level
      verbosity =  @debug ? Logger::DEBUG : false

      # Connect remote server
      @client = Aws::S3::Resource.new(
        region: @target.aws_region,
        credentials: Aws::Credentials.new(@target.aws_id, @target.aws_secret)
        )
    end

    def upload source, target, use_temp_name = false, &callback
      # Push init
      raise RestFtpDaemon::AssertionFailed, "upload/client" if @client.nil?
      log_debug "RemoteS3.upload bucket[#{target.aws_bucket}] name[#{target.name}]"

      # Update progress before
      #yield 0, target.name

      # Do the transfer
      bucket = @client.bucket(target.aws_bucket)
      object = bucket.object(target.name)
      object.upload_file source.path do |progress, total|
        log_debug "- progress[#{progress}] total[#{total}]"
      end

      # Update progress after
      #yield target.size, target.name

      # Dump information about this file
      log_debug "RemoteS3.upload url[#{object.public_url}]"
      log_debug "RemoteS3.upload etag[#{object.etag}]"
      set_info :target, :aws_public_url, object.public_url
      set_info :target, :aws_etag, object.etag
    end

    def connected?
      !@client.nil?
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rest-ftp-daemon-0.422.0 lib/rest-ftp-daemon/remote_s3.rb
rest-ftp-daemon-0.421.1 lib/rest-ftp-daemon/remote_s3.rb
rest-ftp-daemon-0.421.0 lib/rest-ftp-daemon/remote_s3.rb