From 73955dd901bcc008b22315bc327bf0fa7787394e Mon Sep 17 00:00:00 2001 From: dakkar Date: Sun, 9 Dec 2012 12:53:10 +0000 Subject: fix datetime --- lib/Feed.pm | 2 ++ lib/Feed/FixDateTime.pm | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 lib/Feed/FixDateTime.pm (limited to 'lib') diff --git a/lib/Feed.pm b/lib/Feed.pm index d8c67a8..d1bb7df 100644 --- a/lib/Feed.pm +++ b/lib/Feed.pm @@ -6,6 +6,8 @@ use MooseX::Types::URI 'Uri'; with 'MooseX::Traits'; use XML::Feed; +has '+_trait_namespace' => ( default => __PACKAGE__ ); + has uri => ( is => 'ro', isa => Uri, diff --git a/lib/Feed/FixDateTime.pm b/lib/Feed/FixDateTime.pm new file mode 100644 index 0000000..f9ebe73 --- /dev/null +++ b/lib/Feed/FixDateTime.pm @@ -0,0 +1,25 @@ +package Feed::FixDateTime; +use Moose::Role; +use 5.016; +use namespace::autoclean; +use DateTime; + +requires 'process_entry'; + +before process_entry => sub { + my ($self,$entry) = @_; + + for my $f ('issued','modified') { + my $date = $entry->$f; + if (!$date) { + $date = DateTime->from_epoch(epoch=>0); + } + if ($date && $date->time_zone->is_floating) { + $date->set_time_zone('UTC'); + } + + $entry->$f($date); + } +}; + +1; -- cgit v1.2.3