2014-10-30 94 views
0

如何通过scgi接口直接与rtorrent对话?来自stdlib的Ruby XMLRPC客户端只能通过HTTP协议进行通信,而rtorrent只能通过SCGI进行通信。Ruby SCGI/XMLRPC客户端

回答

1

作为起动:

#!ruby 

require "xmlrpc/client" 

class XMLRPC::RTorrent < XMLRPC::Client 
    def do_rpc(xml, async=false) 
    headers = { 
     'CONTENT_LENGTH' => xml.size, 
     'SCGI' => 1 
    } 

    header = "#{headers.to_a.flatten.join("\x00")}" 
    request = "#{header.size}:#{header},#{xml}" 

    TCPSocket.open(@host, @port) do |s| 
     s.write(request) 
     s.read.split(/\n\s*?\n/, 2)[1] 
    end 
    end 
end 

server = XMLRPC::RTorrent.new("127.0.0.1", '', 5000) 
p server.call("system.listMethods") 

它忽略异步,rtorrent的RPC是在端口5000

详情:http://python.ca/scgi/protocol.txt