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
            
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
            
Also aliased as: new_from_uri
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
            
Also aliased as: new_from_hash
new_from_hash(hash={}) click to toggle source
Alias for: new3
new_from_uri(uri, proxy=nil, timeout=nil) click to toggle source
Alias for: new2

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
            
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