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
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 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
# 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
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.