Constructors ——————————————————————-
# File xmlrpc/client.rb, line 295
def initialize(host=nil, path=nil, port=nil, proxy_host=nil, proxy_port=nil,
user=nil, password=nil, use_ssl=nil, timeout=nil)
@http_header_extra = nil
@http_last_response = nil
@cookie = nil
@host = host || "localhost"
@path = path || "/RPC2"
@proxy_host = proxy_host
@proxy_port = proxy_port
@proxy_host ||= 'localhost' if @proxy_port != nil
@proxy_port ||= 8080 if @proxy_host != nil
@use_ssl = use_ssl || false
@timeout = timeout || 30
if use_ssl
require "net/https"
@port = port || 443
else
@port = port || 80
end
@user, @password = user, password
set_auth
# convert ports to integers
@port = @port.to_i if @port != nil
@proxy_port = @proxy_port.to_i if @proxy_port != nil
# HTTP object for synchronous calls
Net::HTTP.version_1_2
@http = Net::HTTP.new(@host, @port, @proxy_host, @proxy_port)
@http.use_ssl = @use_ssl if @use_ssl
@http.read_timeout = @timeout
@http.open_timeout = @timeout
@parser = nil
@create = nil
end
# File xmlrpc/client.rb, line 340
def new2(uri, proxy=nil, timeout=nil)
if match = /^([^:]+):\/\/(([^@]+)@)?([^\/]+)(\/.*)?$/.match(uri)
proto = match[1]
user, passwd = (match[3] || "").split(":")
host, port = match[4].split(":")
path = match[5]
if proto != "http" and proto != "https"
raise "Wrong protocol specified. Only http or https allowed!"
end
else
raise "Wrong URI as parameter!"
end
proxy_host, proxy_port = (proxy || "").split(":")
self.new(host, path, port, proxy_host, proxy_port, user, passwd, (proto == "https"), timeout)
end
# File xmlrpc/client.rb, line 362
def new3(hash={})
# convert all keys into lowercase strings
h = {}
hash.each { |k,v| h[k.to_s.downcase] = v }
self.new(h['host'], h['path'], h['port'], h['proxy_host'], h['proxy_port'], h['user'], h['password'],
h['use_ssl'], h['timeout'])
end
Call methods ————————————————————–
# File xmlrpc/client.rb, line 409
def call(method, *args)
ok, param = call2(method, *args)
if ok
param
else
raise param
end
end
# File xmlrpc/client.rb, line 418
def call2(method, *args)
request = create().methodCall(method, *args)
data = do_rpc(request, false)
parser().parseMethodResponse(data)
end
# File xmlrpc/client.rb, line 433
def call2_async(method, *args)
request = create().methodCall(method, *args)
data = do_rpc(request, true)
parser().parseMethodResponse(data)
end
# File xmlrpc/client.rb, line 424
def call_async(method, *args)
ok, param = call2_async(method, *args)
if ok
param
else
raise param
end
end
Multicall methods ————————————————————–
# File xmlrpc/client.rb, line 442
def multicall(*methods)
ok, params = multicall2(*methods)
if ok
params
else
raise params
end
end
# File xmlrpc/client.rb, line 451
def multicall2(*methods)
gen_multicall(methods, false)
end
# File xmlrpc/client.rb, line 464
def multicall2_async(*methods)
gen_multicall(methods, true)
end
# File xmlrpc/client.rb, line 455
def multicall_async(*methods)
ok, params = multicall2_async(*methods)
if ok
params
else
raise params
end
end
# File xmlrpc/client.rb, line 402
def password=(new_password)
@password = new_password
set_auth
end
Proxy generating methods ------------------------------------------
# File xmlrpc/client.rb, line 471
def proxy(prefix=nil, *args)
Proxy.new(self, prefix, args, :call)
end
# File xmlrpc/client.rb, line 475
def proxy2(prefix=nil, *args)
Proxy.new(self, prefix, args, :call2)
end
# File xmlrpc/client.rb, line 483
def proxy2_async(prefix=nil, *args)
Proxy.new(self, prefix, args, :call2_async)
end
# File xmlrpc/client.rb, line 479
def proxy_async(prefix=nil, *args)
Proxy.new(self, prefix, args, :call_async)
end