Class: XmlConv::Util::DestinationSftp

Inherits:
RemoteDestination show all
Defined in:
lib/xmlconv/util/destination.rb

Constant Summary

Constants inherited from Destination

XmlConv::Util::Destination::STATUS_COMPARABLE

Instance Attribute Summary

Attributes inherited from RemoteDestination

#transport

Attributes inherited from Destination

#path, #status, #uri

Instance Method Summary collapse

Methods inherited from RemoteDestination

#deliver, #forget_credentials!, #host, #host=, #path, #path=, #uri=

Methods inherited from Destination

book, #deliver, #forget_credentials!, #sanitize, #status_comparable, #update_status

Constructor Details

#initialize(uri = URI.parse('sftp:/')) ⇒ DestinationSftp

Returns a new instance of DestinationSftp.



222
223
224
225
226
227
# File 'lib/xmlconv/util/destination.rb', line 222

def initialize(uri = URI.parse('sftp:/'))
  require 'net/sftp'
  super()
  @uri = uri
  @transport = Net::SFTP
end

Instance Method Details

#deliver_to_connection(connection, delivery) ⇒ Object



235
236
237
238
239
240
241
242
243
244
245
246
247
# File 'lib/xmlconv/util/destination.rb', line 235

def deliver_to_connection(connection, delivery)
  if(delivery.is_a?(Array))
    delivery.each { |part|
      deliver_to_connection(connection, part)
    }
  else
    target = delivery.filename
    connection.file.open(File.join(@uri.path, target), "w") do |fh|
      fh.puts delivery
    end
    @status = :sftp_ok
  end
end

#do_deliver(delivery) ⇒ Object



228
229
230
231
232
233
234
# File 'lib/xmlconv/util/destination.rb', line 228

def do_deliver(delivery)
  @transport.start(@uri.host, @uri.user,
                   :user_known_hosts_file => CONFIG.ssh_known_hosts_file,
                   :keys => CONFIG.ssh_identities) { |conn|
    deliver_to_connection(conn, delivery)
  }
end