Quellcode durchsuchen

[TEST] New download page
NOT FINISHED YET !

Antoine Leroyer vor 11 Jahren
Ursprung
Commit
0d94d8260d
5 geänderte Dateien mit 52 neuen und 7 gelöschten Zeilen
  1. 1 0
      lib/rSeed.rb
  2. 11 1
      lib/rSeed/rtorrent.rb
  3. 2 1
      lib/rSeed/server.rb
  4. 37 0
      lib/rSeed/utils.rb
  5. 1 5
      views/download.haml

+ 1 - 0
lib/rSeed.rb

@@ -23,3 +23,4 @@ require "rSeed/server"
 require "rSeed/config"
 require "rSeed/session"
 require "rSeed/rtorrent"
+require "rSeed/utils.rb"

+ 11 - 1
lib/rSeed/rtorrent.rb

@@ -46,8 +46,17 @@ module RSeed
       end
       return response
     end
- 
 
+    def getTorrentPath(hash)
+     begin
+        response = @client.call("d.base_path", "#{torrentHash.capitalize}")
+      rescue XMLRPC::FaultException => e
+        puts "Error:"
+        puts e.faultCode
+        puts e.faultString
+      end 
+    end
+ 
     def getFilesInfo(torrentHash)
       begin
         response = @client.call("f.multicall", "#{torrentHash.capitalize}", "", "f.get_path=", "f.frozen_path=", "f.get_size_bytes=")
@@ -58,6 +67,7 @@ module RSeed
       end
       columns = ["name", "path", "size_bytes"]
       formated_response = response.map { |row| Hash[*columns.zip(row).flatten] }
+      formated_response.sort_by! { |hsh| hsh["name"] }
       return formated_response
     end
 

+ 2 - 1
lib/rSeed/server.rb

@@ -20,6 +20,7 @@ module RSeed
       super
       RSeed::Config.instance_eval(&blk) if block_given?
       @config = Config
+      @utils = Utils
       confFile = File.join(settings.root, 'config.yml')
       if File.exists? confFile
         YAML.load_file(confFile).each_value do |c|
@@ -110,7 +111,7 @@ module RSeed
     get %r{/d/([a-zA-Z0-9]+)} do |hash|
       if publicLink(hash)
         haml :download, :locals => { 
-          :tfiles => @rtorrent.getFilesInfo(hash), 
+          :torrentFileTree => @utils.renderTree(@utils.treePath(@rtorrent.getTorrentPath(hash)))
           :tname => @rtorrent.getName(hash),
           :thash => hash
         }  

+ 37 - 0
lib/rSeed/utils.rb

@@ -0,0 +1,37 @@
+# encoding: utf-8
+
+module RSeed
+  class Utils
+
+    def treePath path
+      tree = {}
+      Dir.foreach(path) do |file|
+        if file != "." and file != ".."
+          if File.directory?(File.join(path, file))
+            tree[file] = treePath(File.join(path, file))
+          else
+            tree[file] = {}
+          end
+        end
+      end
+      tree
+    end
+
+    def renderTree tree
+      s = "<ul>"
+      tree.each do |node|
+        if node == :file or node[1] == :file
+          s += "<li>#{node[0]}</li>"
+        else
+          s += "<li>#{node[0]}/</li>"
+          s += "<li>"
+          s += renderTree(node[1])
+          s += "</li>"
+        end
+      end
+      s += "</ul>"
+      s
+    end
+
+  end
+end

+ 1 - 5
views/download.haml

@@ -14,11 +14,7 @@
       .row
         .large-12.columns
           %h3{data: {torrent_id: thash}} #{tname}
-          %ul.square
-            - tfiles.each do |f|
-              %li
-                %a.dl-file{href: "#{thash}/#{f["name"]}"} #{f["name"]}
-                %span.right #{f["size_bytes"].to_i/1024/1024} Mo
+          #{torrentFileTree}
     %a.exit-off-canvas
 
 %script{:src => '/js/vendor/jquery.js'}