summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kanat-Alexander <mkanat@bugzilla.org>2010-03-08 08:34:34 +0100
committerMax Kanat-Alexander <mkanat@bugzilla.org>2010-03-08 08:34:34 +0100
commit9947ffcb75bcb1f27b07cc9d849f69ed97996d7e (patch)
tree4e03417d278607863f64577a2af0676f2a134050
parentf2660e7a442079cadd07a9824c430534e10bd52e (diff)
downloadbugzilla-9947ffcb75bcb1f27b07cc9d849f69ed97996d7e.tar.gz
bugzilla-9947ffcb75bcb1f27b07cc9d849f69ed97996d7e.tar.xz
Bug 550618: Make the XML-RPC WebService return the right date format
r=dkl, a=mkanat
-rw-r--r--Bugzilla/WebService.pm25
-rw-r--r--Bugzilla/WebService/Server.pm17
2 files changed, 26 insertions, 16 deletions
diff --git a/Bugzilla/WebService.pm b/Bugzilla/WebService.pm
index 6ff751881..2ba8e925e 100644
--- a/Bugzilla/WebService.pm
+++ b/Bugzilla/WebService.pm
@@ -19,10 +19,9 @@
# actual RPC server, see Bugzilla::WebService::Server and its subclasses.
package Bugzilla::WebService;
use strict;
-use Date::Parse;
+use Bugzilla::WebService::Server;
+
use XMLRPC::Lite;
-use Bugzilla::Util qw(datetime_from);
-use Scalar::Util qw(blessed);
# Used by the JSON-RPC server to convert incoming date fields apprpriately.
use constant DATE_FIELDS => {};
@@ -43,22 +42,16 @@ sub type {
return XMLRPC::Data->type($type)->value($value);
}
+# This is the XML-RPC implementation, see the README in Bugzilla/WebService/.
+# Our "base" implementation is in Bugzilla::WebService::Server.
sub datetime_format_outbound {
- my ($self, $date) = @_;
-
- my $time = $date;
- if (blessed($date)) {
- # We expect this to mean we were sent a datetime object
- $time->set_time_zone('UTC');
- } else {
- # We always send our time in UTC, for consistency.
- # passed in value is likely a string, create a datetime object
- $time = datetime_from($date, 'UTC');
- }
- return $time->iso8601();
+ my $self = shift;
+ my $value = Bugzilla::WebService::Server->datetime_format_outbound(@_);
+ # XML-RPC uses an ISO-8601 format that doesn't have any hyphens.
+ $value =~ s/-//g;
+ return $value;
}
-
1;
__END__
diff --git a/Bugzilla/WebService/Server.pm b/Bugzilla/WebService/Server.pm
index 21f0f787c..71c790e8e 100644
--- a/Bugzilla/WebService/Server.pm
+++ b/Bugzilla/WebService/Server.pm
@@ -21,6 +21,8 @@ use strict;
use Bugzilla::Error;
use Bugzilla::Util qw(datetime_from);
+use Scalar::Util qw(blessed);
+
sub handle_login {
my ($self, $class, $method, $full_method) = @_;
eval "require $class";
@@ -38,4 +40,19 @@ sub datetime_format_inbound {
return $time
}
+sub datetime_format_outbound {
+ my ($self, $date) = @_;
+
+ my $time = $date;
+ if (blessed($date)) {
+ # We expect this to mean we were sent a datetime object
+ $time->set_time_zone('UTC');
+ } else {
+ # We always send our time in UTC, for consistency.
+ # passed in value is likely a string, create a datetime object
+ $time = datetime_from($date, 'UTC');
+ }
+ return $time->iso8601();
+}
+
1;