Ruby SCGI / XMLRPC客户端

时间:2014-10-30 21:32:49

标签: ruby

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

1 个答案:

答案 0 :(得分:2)

作为首发:

#!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上。

更多详情:Place