Commit 9947ffcb authored by Max Kanat-Alexander's avatar Max Kanat-Alexander

Bug 550618: Make the XML-RPC WebService return the right date format

r=dkl, a=mkanat
parent f2660e7a
...@@ -19,10 +19,9 @@ ...@@ -19,10 +19,9 @@
# actual RPC server, see Bugzilla::WebService::Server and its subclasses. # actual RPC server, see Bugzilla::WebService::Server and its subclasses.
package Bugzilla::WebService; package Bugzilla::WebService;
use strict; use strict;
use Date::Parse; use Bugzilla::WebService::Server;
use XMLRPC::Lite; 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. # Used by the JSON-RPC server to convert incoming date fields apprpriately.
use constant DATE_FIELDS => {}; use constant DATE_FIELDS => {};
...@@ -43,22 +42,16 @@ sub type { ...@@ -43,22 +42,16 @@ sub type {
return XMLRPC::Data->type($type)->value($value); 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 { sub datetime_format_outbound {
my ($self, $date) = @_; my $self = shift;
my $value = Bugzilla::WebService::Server->datetime_format_outbound(@_);
my $time = $date; # XML-RPC uses an ISO-8601 format that doesn't have any hyphens.
if (blessed($date)) { $value =~ s/-//g;
# We expect this to mean we were sent a datetime object return $value;
$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; 1;
__END__ __END__
......
...@@ -21,6 +21,8 @@ use strict; ...@@ -21,6 +21,8 @@ use strict;
use Bugzilla::Error; use Bugzilla::Error;
use Bugzilla::Util qw(datetime_from); use Bugzilla::Util qw(datetime_from);
use Scalar::Util qw(blessed);
sub handle_login { sub handle_login {
my ($self, $class, $method, $full_method) = @_; my ($self, $class, $method, $full_method) = @_;
eval "require $class"; eval "require $class";
...@@ -38,4 +40,19 @@ sub datetime_format_inbound { ...@@ -38,4 +40,19 @@ sub datetime_format_inbound {
return $time 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; 1;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment