| Class | WS::Encoding::SoapRpcEncoding |
| In: |
vendor/actionwebservice/lib/action_web_service/vendor/ws/encoding/soap_rpc_encoding.rb
|
| Parent: | AbstractEncoding |
| method_namespace | [RW] |
# 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
# 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
# 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
# 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
# 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