aboutsummaryrefslogtreecommitdiffstats
path: root/actionwebservice/lib/action_web_service/protocol/xmlrpc_protocol.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionwebservice/lib/action_web_service/protocol/xmlrpc_protocol.rb')
-rw-r--r--actionwebservice/lib/action_web_service/protocol/xmlrpc_protocol.rb13
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)