summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2012-12-09 12:53:10 +0000
committerdakkar <dakkar@thenautilus.net>2012-12-09 12:53:10 +0000
commit73955dd901bcc008b22315bc327bf0fa7787394e (patch)
tree7bbff120f6f8d1f3bfcc46b8b79b698c3c175f61
parentsample structure (diff)
downloadfeeder-73955dd901bcc008b22315bc327bf0fa7787394e.tar.gz
feeder-73955dd901bcc008b22315bc327bf0fa7787394e.tar.bz2
feeder-73955dd901bcc008b22315bc327bf0fa7787394e.zip
fix datetime
-rw-r--r--feeder.pl2
-rw-r--r--lib/Feed.pm2
-rw-r--r--lib/Feed/FixDateTime.pm25
3 files changed, 28 insertions, 1 deletions
diff --git a/feeder.pl b/feeder.pl
index 61f73be..0b4dd72 100644
--- a/feeder.pl
+++ b/feeder.pl
@@ -4,7 +4,7 @@ use warnings;
use 5.016;
use Feed;
-my $feed_class = Feed->with_traits('Feed::Printer');
+my $feed_class = Feed->with_traits('FixDateTime','Printer');
sub feed {
my (%args) = @_;
my $feed = $feed_class->new(%args);
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;