diff options
author | Kent Sibilev <ksibilev@gmail.com> | 2006-08-23 09:34:46 +0000 |
---|---|---|
committer | Kent Sibilev <ksibilev@gmail.com> | 2006-08-23 09:34:46 +0000 |
commit | d37604f03ee9af7cf2d65ec2e1be986342a965c5 (patch) | |
tree | d15498a8460a37f8d1af65217ff7cd5acddb2ab3 /actionwebservice/lib/action_web_service/protocol | |
parent | 8cbe22ab5155680fa0ef2da4321a4f291aaf78fe (diff) | |
download | rails-d37604f03ee9af7cf2d65ec2e1be986342a965c5.tar.gz rails-d37604f03ee9af7cf2d65ec2e1be986342a965c5.tar.bz2 rails-d37604f03ee9af7cf2d65ec2e1be986342a965c5.zip |
Fixed XMLRPC multicall when one of the called methods returns a struct object.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4810 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionwebservice/lib/action_web_service/protocol')
-rw-r--r-- | actionwebservice/lib/action_web_service/protocol/xmlrpc_protocol.rb | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/actionwebservice/lib/action_web_service/protocol/xmlrpc_protocol.rb b/actionwebservice/lib/action_web_service/protocol/xmlrpc_protocol.rb index 64992e7754..a3abc6a24d 100644 --- a/actionwebservice/lib/action_web_service/protocol/xmlrpc_protocol.rb +++ b/actionwebservice/lib/action_web_service/protocol/xmlrpc_protocol.rb @@ -58,6 +58,19 @@ module ActionWebService # :nodoc: Response.new(raw_response, 'text/xml', return_value) end + def encode_multicall_response(responses, protocol_options={}) + result = responses.map do |return_value, return_type| + if return_value && return_type + return_value = value_to_xmlrpc_wire_format(return_value, return_type) + return_value = [return_value] unless return_value.nil? + end + return_value = false if return_value.nil? + return_value + end + raw_response = XMLRPC::Marshal.dump_response(result) + Response.new(raw_response, 'text/xml', result) + end + def protocol_client(api, protocol_name, endpoint_uri, options={}) return nil unless protocol_name == :xmlrpc ActionWebService::Client::XmlRpc.new(api, endpoint_uri, options) |