2014-10-30 4 views
0

Как можно напрямую поговорить с rtorrent через интерфейс scgi? Клиент XMLRPC от Ruby от stdlib может связываться только через 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

Смежные вопросы