From 6b51cdf183a5fb98b7c115f07f4189f0affe9f26 Mon Sep 17 00:00:00 2001 From: dakkar Date: Sun, 9 Dec 2012 23:20:10 +0000 Subject: rework date handling --- lib/Feed/HelperRole/Mail.pm | 13 ++++--------- lib/Feed/Role/DeDupe.pm | 8 +++++++- lib/Feed/Role/FixDateTime.pm | 4 +--- 3 files changed, 12 insertions(+), 13 deletions(-) (limited to 'lib') diff --git a/lib/Feed/HelperRole/Mail.pm b/lib/Feed/HelperRole/Mail.pm index 57899ee..b7f2789 100644 --- a/lib/Feed/HelperRole/Mail.pm +++ b/lib/Feed/HelperRole/Mail.pm @@ -72,13 +72,8 @@ sub entry_to_mime { my ($self,$entry) = @_; my $from = 'feeder@localhost'; - my $date = $entry->modified; - if ($date->epoch == 0) { - $date = $entry->issued; - if ($date->epoch == ) { - $date = DateTime->now(time_zone=>'UTC'); - } - } + my $date = $entry->modified // $entry->issued + // DateTime->now(time_zone=>'UTC'); my $from_name = $entry->author // $self->title; $from_name =~ tr/,//d; my $id = sha1_hex($entry->id); @@ -169,10 +164,10 @@ __DATA__ [% END %]
- [% IF entry.issued AND entry.issued.epoch %] + [% IF entry.issued %] Posted on [% feeder.date_formatter.format_datetime(entry.issued) %] [% END %] - [% IF entry.modified AND entry.modified.epoch %] + [% IF entry.modified %] Modified on [% feeder.date_formatter.format_datetime(entry.modified) %] [% END %] | diff --git a/lib/Feed/Role/DeDupe.pm b/lib/Feed/Role/DeDupe.pm index 31ba1bf..641c898 100644 --- a/lib/Feed/Role/DeDupe.pm +++ b/lib/Feed/Role/DeDupe.pm @@ -132,9 +132,15 @@ sub mark_seen { sub _entry_id { my ($self,$e) = @_; + my $id = $e->id; + + my $date = $e->modified // $e->issued; + if ($date) { $id .= '-' . $date->iso8601 } + my $body = $e->content->body; my $content_digest = sha1_base64(encode('utf-8',$body)); - my $id = join '-',$e->id,$e->modified->iso8601,$content_digest; + $id .= '-' . $content_digest; + return encode('utf-8',$id); } diff --git a/lib/Feed/Role/FixDateTime.pm b/lib/Feed/Role/FixDateTime.pm index dfc37d1..5169093 100644 --- a/lib/Feed/Role/FixDateTime.pm +++ b/lib/Feed/Role/FixDateTime.pm @@ -13,9 +13,7 @@ before process_entry => sub { 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'); } -- cgit v1.2.3