Extended maintenance of Ruby versions 1.8.7 and 1.9.2 ended on July 31, 2014. Read more

In Files

  • soap/rpc/proxy.rb

Class/Module Index [+]

Quicksearch

SOAP::RPC::Proxy

Attributes

allow_unqualified_element[RW]
default_encodingstyle[RW]
generate_explicit_type[RW]
headerhandler[R]
literal_mapping_registry[RW]
mandatorycharset[RW]
mapping_registry[RW]
operation[R]
soapaction[RW]
streamhandler[R]

Public Class Methods

new(endpoint_url, soapaction, options) click to toggle source
 
               # File soap/rpc/proxy.rb, line 40
def initialize(endpoint_url, soapaction, options)
  @endpoint_url = endpoint_url
  @soapaction = soapaction
  @options = options
  @streamhandler = HTTPStreamHandler.new(
    @options["protocol.http"] ||= ::SOAP::Property.new)
  @operation = {}
  @mandatorycharset = nil
  @allow_unqualified_element = true
  @default_encodingstyle = nil
  @generate_explicit_type = true
  @headerhandler = Header::HandlerSet.new
  @mapping_registry = nil
  @literal_mapping_registry = ::SOAP::Mapping::WSDLLiteralRegistry.new
end
            

Public Instance Methods

add_document_method(soapaction, name, param_def, opt = {}) click to toggle source
add_document_operation(soapaction, name, param_def, opt = {}) click to toggle source
 
               # File soap/rpc/proxy.rb, line 90
def add_document_operation(soapaction, name, param_def, opt = {})
  opt[:request_style] ||= :document
  opt[:response_style] ||= :document
  opt[:request_use] ||= :literal
  opt[:response_use] ||= :literal
  # default values of these values are unqualified in XML Schema.
  # set true for backward compatibility.
  unless opt.key?(:elementformdefault)
    opt[:elementformdefault] = true
  end
  unless opt.key?(:attributeformdefault)
    opt[:attributeformdefault] = true
  end
  @operation[name] = Operation.new(soapaction, param_def, opt)
end
            
Also aliased as: add_document_method
add_method(qname, soapaction, name, param_def, opt = {}) click to toggle source

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

Alias for: add_rpc_operation
add_rpc_method(qname, soapaction, name, param_def, opt = {}) click to toggle source
Alias for: add_rpc_operation
add_rpc_operation(qname, soapaction, name, param_def, opt = {}) click to toggle source
 
               # File soap/rpc/proxy.rb, line 81
def add_rpc_operation(qname, soapaction, name, param_def, opt = {})
  opt[:request_qname] = qname
  opt[:request_style] ||= :rpc
  opt[:response_style] ||= :rpc
  opt[:request_use] ||= :encoded
  opt[:response_use] ||= :encoded
  @operation[name] = Operation.new(soapaction, param_def, opt)
end
            
Also aliased as: add_method, add_rpc_method
call(name, *params) click to toggle source
 
               # File soap/rpc/proxy.rb, line 116
def call(name, *params)
  unless op_info = @operation[name]
    raise MethodDefinitionError, "method: #{name} not defined"
  end
  mapping_opt = create_mapping_opt
  req_header = create_request_header
  req_body = SOAPBody.new(
    op_info.request_body(params, @mapping_registry,
      @literal_mapping_registry, mapping_opt)
  )
  reqopt = create_encoding_opt(
    :soapaction => op_info.soapaction || @soapaction,
    :envelopenamespace => @options["soap.envelope.requestnamespace"],
    :default_encodingstyle =>
      @default_encodingstyle || op_info.request_default_encodingstyle,
    :elementformdefault => op_info.elementformdefault,
    :attributeformdefault => op_info.attributeformdefault
  )
  resopt = create_encoding_opt(
    :envelopenamespace => @options["soap.envelope.responsenamespace"],
    :default_encodingstyle =>
      @default_encodingstyle || op_info.response_default_encodingstyle,
    :elementformdefault => op_info.elementformdefault,
    :attributeformdefault => op_info.attributeformdefault
  )
  env = route(req_header, req_body, reqopt, resopt)
  raise EmptyResponseError unless env
  receive_headers(env.header)
  begin
    check_fault(env.body)
  rescue ::SOAP::FaultError => e
    op_info.raise_fault(e, @mapping_registry, @literal_mapping_registry)
  end
  op_info.response_obj(env.body, @mapping_registry,
    @literal_mapping_registry, mapping_opt)
end
            
check_fault(body) click to toggle source
 
               # File soap/rpc/proxy.rb, line 178
def check_fault(body)
  if body.fault
    raise SOAP::FaultError.new(body.fault)
  end
end
            
endpoint_url() click to toggle source
 
               # File soap/rpc/proxy.rb, line 60
def endpoint_url
  @endpoint_url
end
            
endpoint_url=(endpoint_url) click to toggle source
 
               # File soap/rpc/proxy.rb, line 64
def endpoint_url=(endpoint_url)
  @endpoint_url = endpoint_url
  reset_stream
end
            
inspect() click to toggle source
 
               # File soap/rpc/proxy.rb, line 56
def inspect
  "#<#{self.class}:#{@endpoint_url}>"
end
            
invoke(req_header, req_body, opt = nil) click to toggle source
 
               # File soap/rpc/proxy.rb, line 111
def invoke(req_header, req_body, opt = nil)
  opt ||= create_encoding_opt
  route(req_header, req_body, opt, opt)
end
            
reset_stream() click to toggle source
 
               # File soap/rpc/proxy.rb, line 69
def reset_stream
  @streamhandler.reset(@endpoint_url)
end
            
route(req_header, req_body, reqopt, resopt) click to toggle source
 
               # File soap/rpc/proxy.rb, line 153
def route(req_header, req_body, reqopt, resopt)
  req_env = ::SOAP::SOAPEnvelope.new(req_header, req_body)
  unless reqopt[:envelopenamespace].nil?
    set_envelopenamespace(req_env, reqopt[:envelopenamespace])
  end
  reqopt[:external_content] = nil
  conn_data = marshal(req_env, reqopt)
  if ext = reqopt[:external_content]
    mime = MIMEMessage.new
    ext.each do |k, v|
      mime.add_attachment(v.data)
    end
    mime.add_part(conn_data.send_string + "\r\n")
    mime.close
    conn_data.send_string = mime.content_str
    conn_data.send_contenttype = mime.headers['content-type'].str
  end
  conn_data = @streamhandler.send(@endpoint_url, conn_data,
    reqopt[:soapaction])
  if conn_data.receive_string.empty?
    return nil
  end
  unmarshal(conn_data, resopt)
end
            
set_wiredump_file_base(wiredump_file_base) click to toggle source
 
               # File soap/rpc/proxy.rb, line 73
def set_wiredump_file_base(wiredump_file_base)
  @streamhandler.wiredump_file_base = wiredump_file_base
end
            
test_loopback_response() click to toggle source
 
               # File soap/rpc/proxy.rb, line 77
def test_loopback_response
  @streamhandler.test_loopback_response
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