Class WS::Encoding::SoapRpcEncoding
In: vendor/actionwebservice/lib/action_web_service/vendor/ws/encoding/soap_rpc_encoding.rb
Parent: AbstractEncoding

Methods

Attributes

method_namespace  [RW] 

Public Class methods

[Source]

    # File vendor/actionwebservice/lib/action_web_service/vendor/ws/encoding/soap_rpc_encoding.rb, line 13
13:       def initialize(method_namespace='')
14:         @method_namespace = method_namespace
15:       end

Public Instance methods

[Source]

    # File vendor/actionwebservice/lib/action_web_service/vendor/ws/encoding/soap_rpc_encoding.rb, line 30
30:       def decode_rpc_call(obj)
31:         envelope = SOAP::Processor.unmarshal(obj)
32:         unless envelope
33:           raise(SoapRpcError, "Malformed SOAP request")
34:         end
35:         request = envelope.body.request
36:         method_name = request.elename.name
37:         params = request.collect do |key, value|
38:           info = ParamInfo.new(key, nil, nil)
39:           param = Param.new(nil, info)
40:           Marshaling::SoapForeignObject.new(param, request[key])
41:         end
42:         [method_name, params]
43:       end

[Source]

    # File vendor/actionwebservice/lib/action_web_service/vendor/ws/encoding/soap_rpc_encoding.rb, line 65
65:       def decode_rpc_response(obj)
66:         envelope = SOAP::Processor.unmarshal(obj)
67:         unless envelope
68:           raise(SoapRpcError, "Malformed SOAP response")
69:         end
70:         method_name = envelope.body.request.elename.name
71:         return_value = envelope.body.response
72:         info = ParamInfo.new('return', nil, nil)
73:         param = Param.new(nil, info)
74:         return_value = Marshaling::SoapForeignObject.new(param, return_value)
75:         [method_name, return_value]
76:       end

[Source]

    # File vendor/actionwebservice/lib/action_web_service/vendor/ws/encoding/soap_rpc_encoding.rb, line 17
17:       def encode_rpc_call(method_name, foreign_params)
18:         qname = create_method_qname(method_name)
19:         param_def = []
20:         params = foreign_params.map do |p|
21:           param_def << ['in', p.param.info.name, p.param.info.data.mapping]
22:           [p.param.info.name, p.soap_object]
23:         end
24:         request = SOAP::RPC::SOAPMethodRequest.new(qname, param_def)
25:         request.set_param(params)
26:         envelope = create_soap_envelope(request)
27:         SOAP::Processor.marshal(envelope)
28:       end

[Source]

    # File vendor/actionwebservice/lib/action_web_service/vendor/ws/encoding/soap_rpc_encoding.rb, line 45
45:       def encode_rpc_response(method_name, return_value)
46:         response = nil
47:         qname = create_method_qname(method_name)
48:         if return_value.nil?
49:           response = SOAP::RPC::SOAPMethodResponse.new(qname, nil)
50:         else
51:           param = return_value.param
52:           soap_object = return_value.soap_object
53:           param_def = [['retval', 'return', param.info.data.mapping]]
54:           if soap_object.is_a?(SOAP::SOAPFault)
55:             response = soap_object
56:           else
57:             response = SOAP::RPC::SOAPMethodResponse.new(qname, param_def)
58:             response.retval = soap_object
59:           end
60:         end
61:         envelope = create_soap_envelope(response)
62:         SOAP::Processor.marshal(envelope)
63:       end

[Validate]