In Files

  • xmlrpc/client.rb

XMLRPC::Client

Constants

USER_AGENT

Attributes

http_header_extra[RW]

add additional HTTP headers to the request

http_last_response[R]

makes last HTTP response accessible

password[R]
timeout[R]
user[R]

Public Class Methods

new(host=nil, path=nil, port=nil, proxy_host=nil, proxy_port=nil, user=nil, password=nil, use_ssl=nil, timeout=nil) click to toggle source

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
            

Public Instance Methods

call(method, *args) click to toggle source

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
            
call2(method, *args) click to toggle source
 
               # File xmlrpc/client.rb, line 418
def call2(method, *args)
  request = create().methodCall(method, *args)
  data = do_rpc(request, false)
  parser().parseMethodResponse(data)
end
            
call2_async(method, *args) click to toggle source
 
               # 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
            
call_async(method, *args) click to toggle source
 
               # 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) click to toggle source

Multicall methods ————————————————————–

 
               # File xmlrpc/client.rb, line 442
def multicall(*methods)
  ok, params = multicall2(*methods)
  if ok
    params
  else
    raise params
  end
end
            
multicall2(*methods) click to toggle source
 
               # File xmlrpc/client.rb, line 451
def multicall2(*methods)
  gen_multicall(methods, false)
end
            
multicall2_async(*methods) click to toggle source
 
               # File xmlrpc/client.rb, line 464
def multicall2_async(*methods)
  gen_multicall(methods, true)
end
            
multicall_async(*methods) click to toggle source
 
               # File xmlrpc/client.rb, line 455
def multicall_async(*methods)
  ok, params = multicall2_async(*methods)
  if ok
    params
  else
    raise params
  end
end
            
new2(uri, proxy=nil, timeout=nil) click to toggle source
 
               # 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
            
new3(hash={}) click to toggle source
 
               # 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
            
password=(new_password) click to toggle source
 
               # File xmlrpc/client.rb, line 402
def password=(new_password)
  @password = new_password
  set_auth
end
            
proxy(prefix=nil, *args) click to toggle source

Proxy generating methods ------------------------------------------

 
               # File xmlrpc/client.rb, line 471
def proxy(prefix=nil, *args)
  Proxy.new(self, prefix, args, :call)
end
            
proxy2(prefix=nil, *args) click to toggle source
 
               # File xmlrpc/client.rb, line 475
def proxy2(prefix=nil, *args)
  Proxy.new(self, prefix, args, :call2)
end
            
proxy2_async(prefix=nil, *args) click to toggle source
 
               # File xmlrpc/client.rb, line 483
def proxy2_async(prefix=nil, *args)
  Proxy.new(self, prefix, args, :call2_async)
end
            
proxy_async(prefix=nil, *args) click to toggle source
 
               # File xmlrpc/client.rb, line 479
def proxy_async(prefix=nil, *args)
  Proxy.new(self, prefix, args, :call_async)
end
            
timeout=(new_timeout) click to toggle source
 
               # File xmlrpc/client.rb, line 391
def timeout=(new_timeout)
  @timeout = new_timeout
  @http.read_timeout = @timeout
  @http.open_timeout = @timeout
end
            
user=(new_user) click to toggle source
 
               # File xmlrpc/client.rb, line 397
def user=(new_user)
  @user = new_user
  set_auth
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.

blog comments powered by Disqus