[Xfce4-commits] <eatmonkey:aria2-xml-rpc> New method to return a readable name for the download

Mike Massonnet noreply at xfce.org
Fri Feb 12 18:28:03 CET 2010


Updating branch refs/heads/aria2-xml-rpc
         to 54b27a5353ef5e3b3fc560aac6a272f65d687cfa (commit)
       from f8f788e3126e87724b539eb59d57c4ba8005f059 (commit)

commit 54b27a5353ef5e3b3fc560aac6a272f65d687cfa
Author: Mike Massonnet <mmassonnet at xfce.org>
Date:   Fri Feb 12 18:22:36 2010 +0100

    New method to return a readable name for the download
    
    The download name is returned by going through the bittorrent array
    otherwise the files array from the tellStatus result. It fallback on
    aria2.getFiles for older versions of aria2.

 src/eatmanager.rb |   59 +++++++++++++++++++++++++++++++++-------------------
 1 files changed, 37 insertions(+), 22 deletions(-)

diff --git a/src/eatmanager.rb b/src/eatmanager.rb
index 87e6fa1..39d11b1 100644
--- a/src/eatmanager.rb
+++ b/src/eatmanager.rb
@@ -155,8 +155,8 @@ class Eat::Manager
 		row_iter = nil
 		gid_i = gid.to_i
 
-		result = @aria2.tell_status(gid)
-		return if result.empty?
+		status = @aria2.tell_status(gid)
+		return if status.empty?
 
 		# Find gid in model
 		@liststore.each do |model, path, iter|
@@ -168,7 +168,7 @@ class Eat::Manager
 		# Add inexistent gid
 		if !row_iter
 			# Avoid adding rows with incomplete information
-			return if result["totalLength"] == "0" or result["status"] != "active"
+			return if status["totalLength"] == "0" or status["status"] != "active"
 
 			# Add unknown active download to liststore
 			row_iter = @liststore.append
@@ -183,33 +183,27 @@ class Eat::Manager
 		end
 
 		# Update status of gid in the model
-		case result["status"]
+		case status["status"]
 		when "active" then
-			row_iter[1] = result["connections"].to_i
-			row_iter[2] = result["completedLength"].to_i
-			row_iter[3] = result["uploadLength"].to_i
-			row_iter[4] = result["totalLength"].to_i
-			row_iter[5] = result["downloadSpeed"].to_i
-			row_iter[6] = result["uploadSpeed"].to_i
-			row_iter[7] = result["infoHash"]
-
-			completed = result["completedLength"].to_i
-			total = result["totalLength"].to_i
+			row_iter[1] = status["connections"].to_i
+			row_iter[2] = status["completedLength"].to_i
+			row_iter[3] = status["uploadLength"].to_i
+			row_iter[4] = status["totalLength"].to_i
+			row_iter[5] = status["downloadSpeed"].to_i
+			row_iter[6] = status["uploadSpeed"].to_i
+			row_iter[7] = status["infoHash"]
+
+			completed = status["completedLength"].to_i
+			total = status["totalLength"].to_i
 			percent = total > 0 ? 100 * completed / total : 0
 			row_iter[8] = percent
 
-			result = @aria2.get_files(gid.to_s)
-			if result != nil and !result[0]["path"].empty?
-				row_iter[9] = File.basename(result[0]["path"])
-			end
+			row_iter[9] = get_download_name(status)
 		when "complete" then
 			row_iter[8] = 100
 			# Update the name, useful for very small files for which
 			# this callback didn't run with the "active" state.
-			result = @aria2.get_files(gid.to_s)
-			if result != nil and !result[0]["path"].empty?
-				row_iter[9] = File.basename(result[0]["path"])
-			end
+			row_iter[9] = get_download_name(status)
 		when "removed" then
 			# TODO mark as stopped/inactive
 		when "error" then
@@ -292,6 +286,27 @@ class Eat::Manager
 
 	private
 
+	def get_download_name(status)
+		# TODO cache the return name
+		return nil if status == nil
+
+		# Use the bittorrent array
+		if status['bittorrent'] != nil
+			return status['bittorrent']['info']['name']
+		# Use the files array
+		elsif status['files'] != nil and !status['files'][0]['path'].empty?
+			return File.basename(status['files'][0]['path'])
+		end
+
+		# Fallback on the aria2.getFile XML-RPC method for older version of aria2
+		result = @aria2.get_files(status['gid'])
+		if result != nil and !result[0]["path"].empty?
+			return File.basename(result[0]["path"])
+		end
+
+		return 'n/a'
+	end
+
 	def update_newdl_dialog()
 		settings = Eat::Settings.instance
 		@file_max_download_speed.value = settings.aria2["max-download-limit"].to_i



More information about the Xfce4-commits mailing list