class SOAP::RPC::Driver

Attributes

options[R]
proxy[R]
soapaction[RW]

Public Class Methods

__attr_proxy(symbol, assignable = false) click to toggle source
# File lib/soap/rpc/driver.rb, line 27
def __attr_proxy(symbol, assignable = false)
  name = symbol.to_s
  define_method(name) {
    @proxy.__send__(name)
  }
  if assignable
    aname = name + '='
    define_method(aname) { |rhs|
      @proxy.__send__(aname, rhs)
    }
  end
end
new(endpoint_url, namespace = nil, soapaction = nil) click to toggle source
# File lib/soap/rpc/driver.rb, line 108
def initialize(endpoint_url, namespace = nil, soapaction = nil)
  @namespace = namespace
  @soapaction = soapaction
  @options = setup_options
  @wiredump_file_base = nil
  @proxy = Proxy.new(endpoint_url, @soapaction, @options)
end

Public Instance Methods

add_document_method(name, soapaction, req_qname, res_qname) click to toggle source
# File lib/soap/rpc/driver.rb, line 147
def add_document_method(name, soapaction, req_qname, res_qname)
  param_def = SOAPMethod.create_doc_param_def(req_qname, res_qname)
  @proxy.add_document_method(soapaction, name, param_def)
  add_document_method_interface(name, param_def)
end
add_document_operation(soapaction, name, param_def, opt = {}) click to toggle source
# File lib/soap/rpc/driver.rb, line 158
def add_document_operation(soapaction, name, param_def, opt = {})
  @proxy.add_document_operation(soapaction, name, param_def, opt)
  add_document_method_interface(name, param_def)
end
add_method(name, *params)

add_method is for shortcut of typical rpc/encoded method definition.

Alias for: add_rpc_method
add_method_as(name, name_as, *params)
Alias for: add_rpc_method_as
add_method_with_soapaction(name, soapaction, *params)
add_method_with_soapaction_as(name, name_as, soapaction, *params)
add_rpc_method(name, *params) click to toggle source
# File lib/soap/rpc/driver.rb, line 122
def add_rpc_method(name, *params)
  add_rpc_method_with_soapaction_as(name, name, @soapaction, *params)
end
Also aliased as: add_method
add_rpc_method_as(name, name_as, *params) click to toggle source
# File lib/soap/rpc/driver.rb, line 126
def add_rpc_method_as(name, name_as, *params)
  add_rpc_method_with_soapaction_as(name, name_as, @soapaction, *params)
end
Also aliased as: add_method_as
add_rpc_method_with_soapaction(name, soapaction, *params) click to toggle source
# File lib/soap/rpc/driver.rb, line 130
def add_rpc_method_with_soapaction(name, soapaction, *params)
  add_rpc_method_with_soapaction_as(name, name, soapaction, *params)
end
Also aliased as: add_method_with_soapaction
add_rpc_method_with_soapaction_as(name, name_as, soapaction, *params) click to toggle source
# File lib/soap/rpc/driver.rb, line 134
def add_rpc_method_with_soapaction_as(name, name_as, soapaction, *params)
  param_def = SOAPMethod.create_rpc_param_def(params)
  qname = XSD::QName.new(@namespace, name_as)
  @proxy.add_rpc_method(qname, soapaction, name, param_def)
  add_rpc_method_interface(name, param_def)
end
add_rpc_operation(qname, soapaction, name, param_def, opt = {}) click to toggle source
# File lib/soap/rpc/driver.rb, line 153
def add_rpc_operation(qname, soapaction, name, param_def, opt = {})
  @proxy.add_rpc_operation(qname, soapaction, name, param_def, opt)
  add_rpc_method_interface(name, param_def)
end
call(name, *params) click to toggle source
# File lib/soap/rpc/driver.rb, line 176
def call(name, *params)
  set_wiredump_file_base(name)
  @proxy.call(name, *params)
end
httpproxy() click to toggle source
# File lib/soap/rpc/driver.rb, line 76
def httpproxy
  options["protocol.http.proxy"]
end
httpproxy=(httpproxy) click to toggle source
# File lib/soap/rpc/driver.rb, line 80
def httpproxy=(httpproxy)
  options["protocol.http.proxy"] = httpproxy
end
inspect() click to toggle source
# File lib/soap/rpc/driver.rb, line 72
def inspect
  "#<#{self.class}:#{@proxy.inspect}>"
end
invoke(headers, body) click to toggle source
# File lib/soap/rpc/driver.rb, line 163
def invoke(headers, body)
  if headers and !headers.is_a?(SOAPHeader)
    headers = create_header(headers)
  end
  set_wiredump_file_base(body.elename.name)
  env = @proxy.invoke(headers, body)
  if env.nil?
    return nil, nil
  else
    return env.header, env.body
  end
end
loadproperty(propertyname) click to toggle source
# File lib/soap/rpc/driver.rb, line 116
def loadproperty(propertyname)
  unless options.loadproperty(propertyname)
    raise LoadError.new("No such property to load -- #{propertyname}")
  end
end
mandatorycharset() click to toggle source
# File lib/soap/rpc/driver.rb, line 92
def mandatorycharset
  options["protocol.mandatorycharset"]
end
mandatorycharset=(mandatorycharset) click to toggle source
# File lib/soap/rpc/driver.rb, line 96
def mandatorycharset=(mandatorycharset)
  options["protocol.mandatorycharset"] = mandatorycharset
end
wiredump_dev() click to toggle source
# File lib/soap/rpc/driver.rb, line 84
def wiredump_dev
  options["protocol.http.wiredump_dev"]
end
wiredump_dev=(wiredump_dev) click to toggle source
# File lib/soap/rpc/driver.rb, line 88
def wiredump_dev=(wiredump_dev)
  options["protocol.http.wiredump_dev"] = wiredump_dev
end
wiredump_file_base() click to toggle source
# File lib/soap/rpc/driver.rb, line 100
def wiredump_file_base
  options["protocol.wiredump_file_base"]
end
wiredump_file_base=(wiredump_file_base) click to toggle source
# File lib/soap/rpc/driver.rb, line 104
def wiredump_file_base=(wiredump_file_base)
  options["protocol.wiredump_file_base"] = wiredump_file_base
end

Private Instance Methods

add_document_method_interface(name, param_def) click to toggle source
# File lib/soap/rpc/driver.rb, line 220
def add_document_method_interface(name, param_def)
  param_count = RPC::SOAPMethod.param_count(param_def, RPC::SOAPMethod::IN)
  add_method_interface(name, param_count)
end
add_method_interface(name, param_count) click to toggle source
# File lib/soap/rpc/driver.rb, line 226
def add_method_interface(name, param_count)
  ::SOAP::Mapping.define_singleton_method(self, name) do |*arg|
    unless arg.size == param_count
      raise ArgumentError.new(
      "wrong number of arguments (#{arg.size} for #{param_count})")
    end
    call(name, *arg)
  end
  self.method(name)
end
add_rpc_method_interface(name, param_def) click to toggle source
# File lib/soap/rpc/driver.rb, line 214
def add_rpc_method_interface(name, param_def)
  param_count = RPC::SOAPMethod.param_count(param_def,
    RPC::SOAPMethod::IN, RPC::SOAPMethod::INOUT)
  add_method_interface(name, param_count)
end
create_header(headers) click to toggle source
# File lib/soap/rpc/driver.rb, line 189
def create_header(headers)
  header = SOAPHeader.new()
  headers.each do |content, mustunderstand, encodingstyle|
    header.add(SOAPHeaderItem.new(content, mustunderstand, encodingstyle))
  end
  header
end
set_wiredump_file_base(name) click to toggle source
# File lib/soap/rpc/driver.rb, line 183
def set_wiredump_file_base(name)
  if @wiredump_file_base
    @proxy.set_wiredump_file_base("#{@wiredump_file_base}_#{name}")
  end
end
setup_options() click to toggle source
# File lib/soap/rpc/driver.rb, line 197
def setup_options
  if opt = Property.loadproperty(::SOAP::PropertyName)
    opt = opt["client"]
  end
  opt ||= Property.new
  opt.add_hook("protocol.mandatorycharset") do |key, value|
    @proxy.mandatorycharset = value
  end
  opt.add_hook("protocol.wiredump_file_base") do |key, value|
    @wiredump_file_base = value
  end
  opt["protocol.http.charset"] ||= XSD::Charset.xml_encoding_label
  opt["protocol.http.proxy"] ||= Env::HTTP_PROXY
  opt["protocol.http.no_proxy"] ||= Env::NO_PROXY
  opt
end