class Spectre::FTP::SFTPConnection

Public Class Methods

new(host, username, opts, logger) click to toggle source
# File lib/spectre/ftp.rb, line 65
def initialize host, username, opts, logger
  opts[:non_interactive] = true

  @__logger = logger
  @__session = nil
  @__host = host
  @__username = username
  @__opts = opts
end

Public Instance Methods

can_connect?() click to toggle source
# File lib/spectre/ftp.rb, line 87
def can_connect?
  begin
    connect!
    return true
  rescue
    return false
  end
end
close() click to toggle source
# File lib/spectre/ftp.rb, line 82
def close
  return unless @__session and not @__session.closed?
  # @__session.close!
end
connect!() click to toggle source
# File lib/spectre/ftp.rb, line 75
def connect!
  return unless @__session == nil or @__session.closed?
  @__logger.info "Connecting to '#{@__host}' with user '#{@__username}'"
  @__session = Net::SFTP.start(@__host, @__username, @__opts)
  @__session.connect!
end
download(remotefile, to: File.basename(remotefile)) click to toggle source
# File lib/spectre/ftp.rb, line 96
def download remotefile, to: File.basename(remotefile)
  @__logger.info "Downloading '#{@__username}@#{@__host}:#{remotefile}' to '#{File.expand_path to}'"
  connect!
  @__session.download!(remotefile, to)
end
exists(path) click to toggle source
# File lib/spectre/ftp.rb, line 115
def exists path
  begin
    file_info = @__session.stat! path

  rescue Net::SFTP::StatusException => e
    return false if e.description == 'no such file'
    raise e
  end

  return true
end
stat(path) click to toggle source
# File lib/spectre/ftp.rb, line 108
def stat path
  connect!
  file_info = @__session.stat! path
  @__logger.info "Stat '#{path}'\n#{JSON.pretty_generate file_info.attributes}"
  file_info.attributes
end
upload(localfile, to: File.basename(localfile)) click to toggle source
# File lib/spectre/ftp.rb, line 102
def upload localfile, to: File.basename(localfile)
  @__logger.info "Uploading '#{File.expand_path localfile}' to '#{@__username}@#{@__host}:#{to}'"
  connect!
  @__session.upload!(localfile, to)
end