Class: XMLRPC::Client
- Inherits:
-
Object
- Object
- XMLRPC::Client
- Includes:
- ParseContentType, ParserWriterChooseMixin
- Defined in:
- lib/xmlrpc/client.rb
Defined Under Namespace
Classes: Proxy
Constant Summary collapse
- USER_AGENT =
"XMLRPC::Client (Ruby #{RUBY_VERSION})"
Instance Attribute Summary collapse
-
#cookie ⇒ Object
Cookie support.
-
#http_header_extra ⇒ Object
add additional HTTP headers to the request.
-
#http_last_response ⇒ Object
readonly
makes last HTTP response accessible.
-
#password ⇒ Object
Returns the value of attribute password.
-
#timeout ⇒ Object
Returns the value of attribute timeout.
-
#user ⇒ Object
Returns the value of attribute user.
Class Method Summary collapse
- .new2(uri, proxy = nil, timeout = nil) ⇒ Object (also: new_from_uri)
- .new3(hash = {}) ⇒ Object (also: new_from_hash)
Instance Method Summary collapse
-
#call(method, *args) ⇒ Object
Call methods --------------------------------------------------------------.
- #call2(method, *args) ⇒ Object
- #call2_async(method, *args) ⇒ Object
- #call_async(method, *args) ⇒ Object
-
#initialize(host = nil, path = nil, port = nil, proxy_host = nil, proxy_port = nil, user = nil, password = nil, use_ssl = nil, timeout = nil) ⇒ Client
constructor
Constructors -------------------------------------------------------------------.
-
#multicall(*methods) ⇒ Object
Multicall methods --------------------------------------------------------------.
- #multicall2(*methods) ⇒ Object
- #multicall2_async(*methods) ⇒ Object
- #multicall_async(*methods) ⇒ Object
-
#proxy(prefix = nil, *args) ⇒ Object
Proxy generating methods ------------------------------------------.
- #proxy2(prefix = nil, *args) ⇒ Object
- #proxy2_async(prefix = nil, *args) ⇒ Object
- #proxy_async(prefix = nil, *args) ⇒ Object
Methods included from ParseContentType
Methods included from ParserWriterChooseMixin
Constructor Details
#initialize(host = nil, path = nil, port = nil, proxy_host = nil, proxy_port = nil, user = nil, password = nil, use_ssl = nil, timeout = nil) ⇒ Client
Constructors -------------------------------------------------------------------
295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 |
# File 'lib/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 |
Instance Attribute Details
#cookie ⇒ Object
Cookie support
386 387 388 |
# File 'lib/xmlrpc/client.rb', line 386 def @cookie end |
#http_header_extra ⇒ Object
add additional HTTP headers to the request
380 381 382 |
# File 'lib/xmlrpc/client.rb', line 380 def http_header_extra @http_header_extra end |
#http_last_response ⇒ Object (readonly)
makes last HTTP response accessible
383 384 385 |
# File 'lib/xmlrpc/client.rb', line 383 def http_last_response @http_last_response end |
#password ⇒ Object
Returns the value of attribute password
389 390 391 |
# File 'lib/xmlrpc/client.rb', line 389 def password @password end |
#timeout ⇒ Object
Returns the value of attribute timeout
389 390 391 |
# File 'lib/xmlrpc/client.rb', line 389 def timeout @timeout end |
#user ⇒ Object
Returns the value of attribute user
389 390 391 |
# File 'lib/xmlrpc/client.rb', line 389 def user @user end |
Class Method Details
.new2(uri, proxy = nil, timeout = nil) ⇒ Object Also known as: new_from_uri
340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 |
# File 'lib/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 = {}) ⇒ Object Also known as: new_from_hash
362 363 364 365 366 367 368 369 370 |
# File 'lib/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 |
Instance Method Details
#call(method, *args) ⇒ Object
Call methods --------------------------------------------------------------
409 410 411 412 413 414 415 416 |
# File 'lib/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) ⇒ Object
418 419 420 421 422 |
# File 'lib/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) ⇒ Object
433 434 435 436 437 |
# File 'lib/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) ⇒ Object
424 425 426 427 428 429 430 431 |
# File 'lib/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) ⇒ Object
Multicall methods --------------------------------------------------------------
442 443 444 445 446 447 448 449 |
# File 'lib/xmlrpc/client.rb', line 442 def multicall(*methods) ok, params = multicall2(*methods) if ok params else raise params end end |
#multicall2(*methods) ⇒ Object
451 452 453 |
# File 'lib/xmlrpc/client.rb', line 451 def multicall2(*methods) gen_multicall(methods, false) end |
#multicall2_async(*methods) ⇒ Object
464 465 466 |
# File 'lib/xmlrpc/client.rb', line 464 def multicall2_async(*methods) gen_multicall(methods, true) end |
#multicall_async(*methods) ⇒ Object
455 456 457 458 459 460 461 462 |
# File 'lib/xmlrpc/client.rb', line 455 def multicall_async(*methods) ok, params = multicall2_async(*methods) if ok params else raise params end end |
#proxy(prefix = nil, *args) ⇒ Object
Proxy generating methods ------------------------------------------
471 472 473 |
# File 'lib/xmlrpc/client.rb', line 471 def proxy(prefix=nil, *args) Proxy.new(self, prefix, args, :call) end |
#proxy2(prefix = nil, *args) ⇒ Object
475 476 477 |
# File 'lib/xmlrpc/client.rb', line 475 def proxy2(prefix=nil, *args) Proxy.new(self, prefix, args, :call2) end |