class GxG::Networking::XmlrpcClient

XMLRPC Classes:

Public Class Methods

new() click to toggle source
# File lib/gxg/net_clients.rb, line 2341
def initialize()
  @client = nil
  @interface = nil
  self
end

Public Instance Methods

callmethod(the_method = nil, arguments = nil) click to toggle source
# File lib/gxg/net_clients.rb, line 2404
def callmethod(the_method = nil, arguments = nil)
  # The +method+ parameter is converted into a String and should
  # be a valid XML-RPC method-name.
  #
  # Each parameter of +args+ must be of one of the following types,
  # where Hash, Struct and Array can contain any of these listed _types_:
  #
  # * Fixnum, Bignum
  # * TrueClass, FalseClass, +true+, +false+
  # * String, Symbol
  # * Float
  # * Hash, Struct
  # * Array
  # * Date, Time, XMLRPC::DateTime
  # * XMLRPC::Base64
  # * A Ruby object which class includes XMLRPC::Marshallable
  #   (only if Config::ENABLE_MARSHALLABLE is +true+).
  #   That object is converted into a hash, with one additional key/value
  #   pair <code>___class___</code> which contains the class name
  #   for restoring that object later.
  result = nil
  begin
    unless the_method.is_a?(::String)
      raise ArgumentError, "You MUST provide a valid method String."
    end
    if @client
      calldata = []
      calldata << the_method
      #
      # TODO: scour arguments structure for type conversions to be done.
      if arguments.is_a?(::Array)
        arguments.each do |entry|
          calldata << entry
        end
      else
        if arguments
          calldata << arguments
        end
      end
      result = @client.call(*calldata)
      # TODO: scour result structure for type conversions to gxg standard.
    end
  rescue Exception => the_error
    log_error({:error => the_error, :parameters => {:method => the_method, :arguments => arguments}})
  end
  result
end
closed?() click to toggle source
# File lib/gxg/net_clients.rb, line 2396
def closed?()
  if @client
    false
  else
    true
  end
end
interface() click to toggle source
# File lib/gxg/net_clients.rb, line 2452
def interface()
  begin
    if @client
      unless @interface
        @interface = @client.call("interface")
      end
      unless @interface
        @interface = @client.call("Interface")
      end
    end
  rescue Exception => the_error
    # log_error({:error => the_error, :parameters => {}})
  end
  @interface
end
login(the_url=nil, options={}) click to toggle source
# File lib/gxg/net_clients.rb, line 2347
def login(the_url=nil, options={})
  result = false
  begin
    unless the_url.is_a?(::URI::Generic)
      raise ArgumentError, "You MUST provide a valid URI."
    end
    if options[:use_ssl] == true || the_url.scheme.to_s.downcase == 'https'
      client_parameters = [(the_url.hostname), (the_url.path), (the_url.port || 443)]
    else
      client_parameters = [(the_url.hostname), (the_url.path), (the_url.port || 80)]
    end
    if options[:proxy].is_a?(::URI::Generic)
      client_parameters << options[:proxy].host
      client_parameters << options[:proxy].port
    else
      client_parameters << nil
      client_parameters << nil
    end
    if the_url.user && the_url.password
      client_parameters << the_url.user
      client_parameters << the_url.password
    else
      client_parameters << nil
      client_parameters << nil
    end
    if options[:use_ssl] == true || the_url.scheme.to_s.downcase == 'https'
      client_parameters << true
    else
      client_parameters << nil
    end
    if options[:timeout].is_a?(::Numeric)
      client_parameters << options[:timeout].to_i
    else
      client_parameters << 30
    end
    @client = ::XMLRPC::Client.new(*client_parameters)
    this().interface()
    result = true
  rescue Exception => the_error
    log_error({:error => the_error, :parameters => {:url => the_url}})
  end
  result
end
logout() click to toggle source
# File lib/gxg/net_clients.rb, line 2391
def logout()
  @client = nil
  true
end