class SOAP::RPC::CGIStub
SYNOPSIS
CGIStub.new
DESCRIPTION
To be written...
Constants
- HTTPVersion
Public Class Methods
new(appname, default_namespace)
click to toggle source
Calls superclass method
# File lib/soap/rpc/cgistub.rb, line 77 def initialize(appname, default_namespace) super(appname) set_log(STDERR) self.level = ERROR @default_namespace = default_namespace @remote_host = ENV['REMOTE_HOST'] || ENV['REMOTE_ADDR'] || 'unknown' @router = ::SOAP::RPC::Router.new(self.class.name) @soaplet = ::SOAP::RPC::SOAPlet.new(@router) on_init end
Public Instance Methods
add_document_operation(receiver, soapaction, name, param_def, opt = {})
click to toggle source
# File lib/soap/rpc/cgistub.rb, line 149 def add_document_operation(receiver, soapaction, name, param_def, opt = {}) @router.add_document_operation(receiver, soapaction, name, param_def, opt) end
add_headerhandler(obj)
click to toggle source
# File lib/soap/rpc/cgistub.rb, line 115 def add_headerhandler(obj) @router.add_headerhandler(obj) end
Also aliased as: add_rpc_headerhandler
add_method_with_namespace_as(namespace, obj, name, name_as, *param)
Alias for: add_rpc_method_with_namespace_as
add_rpc_method(obj, name, *param)
click to toggle source
method entry interface
# File lib/soap/rpc/cgistub.rb, line 122 def add_rpc_method(obj, name, *param) add_rpc_method_with_namespace_as(@default_namespace, obj, name, name, *param) end
Also aliased as: add_method
add_rpc_method_as(obj, name, name_as, *param)
click to toggle source
# File lib/soap/rpc/cgistub.rb, line 127 def add_rpc_method_as(obj, name, name_as, *param) add_rpc_method_with_namespace_as(@default_namespace, obj, name, name_as, *param) end
Also aliased as: add_method_as
add_rpc_method_with_namespace(namespace, obj, name, *param)
click to toggle source
# File lib/soap/rpc/cgistub.rb, line 132 def add_rpc_method_with_namespace(namespace, obj, name, *param) add_rpc_method_with_namespace_as(namespace, obj, name, name, *param) end
Also aliased as: add_method_with_namespace
add_rpc_method_with_namespace_as(namespace, obj, name, name_as, *param)
click to toggle source
# File lib/soap/rpc/cgistub.rb, line 137 def add_rpc_method_with_namespace_as(namespace, obj, name, name_as, *param) qname = XSD::QName.new(namespace, name_as) soapaction = nil param_def = SOAPMethod.derive_rpc_param_def(obj, name, *param) @router.add_rpc_operation(obj, qname, soapaction, name, param_def) end
Also aliased as: add_method_with_namespace_as
add_rpc_operation(receiver, qname, soapaction, name, param_def, opt = {})
click to toggle source
# File lib/soap/rpc/cgistub.rb, line 145 def add_rpc_operation(receiver, qname, soapaction, name, param_def, opt = {}) @router.add_rpc_operation(receiver, qname, soapaction, name, param_def, opt) end
add_rpc_servant(obj, namespace = @default_namespace)
click to toggle source
servant entry interface
# File lib/soap/rpc/cgistub.rb, line 110 def add_rpc_servant(obj, namespace = @default_namespace) @router.add_rpc_servant(obj, namespace) end
Also aliased as: add_servant
generate_explicit_type()
click to toggle source
# File lib/soap/rpc/cgistub.rb, line 100 def generate_explicit_type @router.generate_explicit_type end
generate_explicit_type=(generate_explicit_type)
click to toggle source
# File lib/soap/rpc/cgistub.rb, line 104 def generate_explicit_type=(generate_explicit_type) @router.generate_explicit_type = generate_explicit_type end
mapping_registry()
click to toggle source
# File lib/soap/rpc/cgistub.rb, line 92 def mapping_registry @router.mapping_registry end
mapping_registry=(value)
click to toggle source
# File lib/soap/rpc/cgistub.rb, line 96 def mapping_registry=(value) @router.mapping_registry = value end
on_init()
click to toggle source
# File lib/soap/rpc/cgistub.rb, line 88 def on_init # do extra initialization in a derived class if needed. end
set_fcgi_request(request)
click to toggle source
# File lib/soap/rpc/cgistub.rb, line 153 def set_fcgi_request(request) @fcgi = request end
Private Instance Methods
run()
click to toggle source
# File lib/soap/rpc/cgistub.rb, line 161 def run res = WEBrick::HTTPResponse.new({:HTTPVersion => HTTPVersion}) begin @log.info { "received a request from '#{ @remote_host }'" } if @fcgi req = SOAPFCGIRequest.new(@fcgi) else req = SOAPStdinRequest.new($stdin) end @soaplet.do_POST(req, res) rescue HTTPStatus::EOFError, HTTPStatus::RequestTimeout => ex res.set_error(ex) rescue HTTPStatus::Error => ex res.set_error(ex) rescue HTTPStatus::Status => ex res.status = ex.code rescue StandardError, NameError => ex # for Ruby 1.6 res.set_error(ex, true) ensure if defined?(MOD_RUBY) r = Apache.request r.status = res.status r.content_type = res.content_type r.send_http_header buf = res.body else buf = '' res.send_response(buf) buf.sub!(/^[^\r]+\r\n/, '') # Trim status line. end @log.debug { "SOAP CGI Response:\n#{ buf }" } if @fcgi @fcgi.out.print buf @fcgi.finish @fcgi = nil else print buf end end 0 end