class DRbQS::Transfer::Client

Attributes

directory[R]
local[R]
sftp[R]

Public Class Methods

get() click to toggle source
# File lib/drbqs/utility/transfer/transfer_client.rb, line 63
def get
  @transfer
end
new(server_directory, same_host, host, user) click to toggle source
# File lib/drbqs/utility/transfer/transfer_client.rb, line 8
def initialize(server_directory, same_host, host, user)
  unless Pathname.new(server_directory).absolute?
    raise ArgumentError, "Directory of server must be absolute."
  end
  @directory = server_directory
  @same_host = same_host
  @local = DRbQS::Transfer::Client::Local.new(@directory)
  if host && user
    @sftp = DRbQS::Transfer::Client::SFTP.new(user, host, @directory)
  else
    @sftp = nil
  end
end
set(transfer) click to toggle source
# File lib/drbqs/utility/transfer/transfer_client.rb, line 67
def set(transfer)
  @transfer = transfer
end
transfer_to_server(files) click to toggle source
# File lib/drbqs/utility/transfer/transfer_client.rb, line 71
def transfer_to_server(files)
  if files && @transfer
    begin
      @transfer.transfer(files)
    rescue Exception => err
      err_new = err.class.new("#{err.to_s} (#{err.class}); Can not send file: #{files.join(", ")}")
      err_new.set_backtrace(err.backtrace)
      raise err_new
    end
  else
    raise "Server does not set transfer settings. Can not send file: #{files.join(", ")}"
  end
end

Public Instance Methods

download(files, readonly = nil) click to toggle source
# File lib/drbqs/utility/transfer/transfer_client.rb, line 39
def download(files, readonly = nil)
  download_files = nil
  if @same_host
    begin
      if readonly
        download_files = files
      else
        download_files = @local.download(files)
      end
    rescue
    end
  end
  if !download_files
    unless @sftp
      raise "SFTP is not prepared."
    end
    download_files = @sftp.download(files)
  end
  download_files
end
transfer(files) click to toggle source
# File lib/drbqs/utility/transfer/transfer_client.rb, line 22
def transfer(files)
  transfered = false
  if @same_host
    begin
      @local.transfer(files)
      transfered = true
    rescue
    end
  end
  if !transfered
    unless @sftp
      raise "Can not transfer files."
    end
    @sftp.transfer(files)
  end
end