Mercurial > pub > buggler
diff lib/Benzin/Bugzilla/XmlRpcDeserializer.pm @ 10:14a966369278
working version of exporting bugs from bugzilla in tj3 format (without bookings)
author | cin |
---|---|
date | Mon, 07 Sep 2015 01:37:11 +0300 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/Benzin/Bugzilla/XmlRpcDeserializer.pm Mon Sep 07 01:37:11 2015 +0300 @@ -0,0 +1,51 @@ +package Benzin::Bugzilla::XmlRpcDeserializer; +use strict; +use mro; +use parent qw(-norequire XMLRPC::Deserializer); +use IMPL::require { Strptime => 'DateTime::Format::Strptime' }; + +my $xmlRpcDateFormat = Strptime->new( + pattern => '%Y%m%dT%H:%M:%S', + time_zone => 'UTC', + on_error => 'croak' +); + +sub decode_value { + my $this = shift; + my ( $name, $attrs, $children, $value ) = @{ $_[0] }; + + if ( $name eq 'dateTime.iso8601' ) { + return $xmlRpcDateFormat->parse_datetime($value); + } + else { + $this->next::method(@_); + } + +} + +1; + +__END__ + +=pod + +=head1 NAME + +C<Benzin::Bugzilla::XmlRpcDeserializer> - data deserializer for L<XMLRPC::Lite>. + +=head1 SYNOPSIS + +=begin code perl + +# override the default deserializer +my $client = XMLRPC::Lite->new( + deserializer => Benzin::Bugzilla::XmlRpcDeserializer->new() +); + +=end code perl + +=head1 DESCRIPTION + +Slightly tuned C<XMLRPC::Deserializer> to parse C<dateTime.iso8601> values to L<DateTime> objects. + +=cut