From 98ae24b9676fb4c28d25c13ace8d08ec741aad04 Mon Sep 17 00:00:00 2001 From: Leon Breedt Date: Wed, 9 Nov 2005 05:29:08 +0000 Subject: Fix that XML-RPC date/time values did not have well-defined behaviour (#2516, #2534). This fix has one caveat, in that we can't support pre-1970 dates from XML-RPC clients. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2945 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionwebservice/lib/action_web_service/casting.rb | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'actionwebservice/lib/action_web_service/casting.rb') diff --git a/actionwebservice/lib/action_web_service/casting.rb b/actionwebservice/lib/action_web_service/casting.rb index c9982f13a0..3c0afbe9f9 100644 --- a/actionwebservice/lib/action_web_service/casting.rb +++ b/actionwebservice/lib/action_web_service/casting.rb @@ -1,5 +1,6 @@ require 'time' require 'date' +require 'xmlrpc/datetime' module ActionWebService # :nodoc: module Casting # :nodoc: @@ -58,6 +59,13 @@ module ActionWebService # :nodoc: end def cast_base_type(value, signature_type) # :nodoc: + # This is a work-around for the fact that XML-RPC special-cases DateTime values into its own DateTime type + # in order to support iso8601 dates. This doesn't work too well for us, so we'll convert it into a Time, + # with the caveat that we won't be able to handle pre-1970 dates that are sent to us. + # + # See http://dev.rubyonrails.com/ticket/2516 + value = value.to_time if value.is_a?(XMLRPC::DateTime) + case signature_type.type when :int Integer(value) -- cgit v1.2.3