Sha256: 59283ad9e29bbcbac64873f6b387f49b67b6140ad0bdf5e74c79b3aac7de8f35
Contents?: true
Size: 1.97 KB
Versions: 3
Compression:
Stored size: 1.97 KB
Contents
require 'net/sftp' require 'net/sftp/errors' class SSHTransfer attr :host attr :username attr :local_files attr :upload_to attr :download_from attr :options attr :logger def initialize(opts) @options = {} opts.each{ |key, value| @options[key.to_sym] = value } @host = options.delete(:host) @username = options.delete(:username) @local_files = options.delete(:local_files) @upload_to = options.delete(:upload_to) @download_from = options.delete(:download_from) @logger = options.delete(:logger) end def upload Net::SFTP.start(host, username, options) do |sftp| Dir[local_files].each do |file| begin sftp.upload!(file, File.join(upload_to, File.basename(file)), :progress => self) File.delete(file) rescue Net::SFTP::StatusException => e on_file_error(file, e) end end end end def download Net::SFTP.start(host, username, options) do |sftp| begin sftp.download!(download_from, local_files, :progress => self, :recursive => true) sftp.dir.foreach(download_from) do |entry| sftp.remove!(File.join(download_from, entry.name)) if entry.file? end rescue Net::SFTP::StatusException => e on_file_error(nil, e) end end end # even handlers def on_open(uploader, file) logger.info "starting transfer: #{file.local} -> #{file.remote} (#{file.size} bytes)" end def on_file_error(file, exception) logger.error "error: " + exception end def on_put(uploader, file, offset, data) # puts "writing #{data.length} bytes to #{file.remote} starting at #{offset}" end def on_get(downloader, file, offset, data) #puts "writing #{data.length} bytes to #{file.local} starting at #{offset}" end def on_mkdir(uploader, path) logger.info "creating directory #{path}" end def on_close(uploader, file) logger.info "finished with #{file.remote}" end def on_finish(uploader) logger.info "Transfer completed!" end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
jcangas-datagateway-1.2.2 | lib/datagateway/ssh_transfer.rb |
jcangas-datagateway-1.4.4 | lib/datagateway/ssh_transfer.rb |
jcangas-datagateway-1.5.0 | lib/datagateway/ssh_transfer.rb |