lib/net/sftp/operations/download.rb in net-sftp-2.1.3.rc3 vs lib/net/sftp/operations/download.rb in net-sftp-3.0.0.beta1
- old
+ new
@@ -254,11 +254,11 @@
# Called when a remote directory is "opened" for reading, e.g. to
# enumerate its contents. Starts an readdir operation if the opendir
# operation was successful.
def on_opendir(response)
entry = response.request[:entry]
- raise "opendir #{entry.remote}: #{response}" unless response.ok?
+ raise StatusException.new(response, "opendir #{entry.remote}") unless response.ok?
entry.handle = response[:handle]
request = sftp.readdir(response[:handle], &method(:on_readdir))
request[:parent] = entry
end
@@ -269,11 +269,11 @@
entry = response.request[:parent]
if response.eof?
request = sftp.close(entry.handle, &method(:on_closedir))
request[:parent] = entry
elsif !response.ok?
- raise "readdir #{entry.remote}: #{response}"
+ raise StatusException.new(response, "readdir #{entry.remote}")
else
response[:names].each do |item|
next if item.name == "." || item.name == ".."
stack << Entry.new(::File.join(entry.remote, item.name), ::File.join(entry.local, item.name), item.directory?, item.attributes.size)
end
@@ -295,19 +295,19 @@
# Called when a directory handle is closed.
def on_closedir(response)
@active -= 1
entry = response.request[:parent]
- raise "close #{entry.remote}: #{response}" unless response.ok?
+ raise StatusException.new(response, "close #{entry.remote}") unless response.ok?
process_next_entry
end
# Called when a file has been opened. This will call #download_next_chunk
# to initiate the data transfer.
def on_open(response)
entry = response.request[:entry]
- raise "open #{entry.remote}: #{response}" unless response.ok?
+ raise StatusException.new(response, "open #{entry.remote}") unless response.ok?
entry.handle = response[:handle]
entry.sink = entry.local.respond_to?(:write) ? entry.local : ::File.open(entry.local, "wb")
entry.offset = 0
@@ -331,11 +331,11 @@
update_progress(:close, entry)
entry.sink.close
request = sftp.close(entry.handle, &method(:on_close))
request[:entry] = entry
elsif !response.ok?
- raise "read #{entry.remote}: #{response}"
+ raise StatusException.new(response, "read #{entry.remote}")
else
entry.offset += response[:data].bytesize
update_progress(:get, entry, response.request[:offset], response[:data])
entry.sink.write(response[:data])
download_next_chunk(entry)
@@ -344,10 +344,10 @@
# Called when a file handle is closed.
def on_close(response)
@active -= 1
entry = response.request[:entry]
- raise "close #{entry.remote}: #{response}" unless response.ok?
+ raise StatusException.new(response, "close #{entry.remote}") unless response.ok?
process_next_entry
end
# If a progress callback or object has been set, this will report
# the progress to that callback or object.