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.