From: Eric Wong Date: Sat, 5 Apr 2014 07:02:19 +0000 (+0000) Subject: feed: use Date::Parse to parse dates X-Git-Tag: v1.0.0~1311 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=8251e45156fd61e83d4249154627b87f5eafdf0a;p=public-inbox.git feed: use Date::Parse to parse dates This is a smaller module dependency-wise and should be easier-to-install for folks with limited packaging systems or network/disk capacity. We do not need very powerful date parsing, as bad date formats are likely the work of spammers. --- diff --git a/lib/PublicInbox/Feed.pm b/lib/PublicInbox/Feed.pm index 704effce..c97a3da8 100644 --- a/lib/PublicInbox/Feed.pm +++ b/lib/PublicInbox/Feed.pm @@ -12,8 +12,8 @@ use Encode::MIME::Header; use DateTime::Format::Mail; use CGI qw(escapeHTML); use POSIX qw(strftime); +use Date::Parse qw(strptime); use constant DATEFMT => '%Y-%m-%dT%H:%M:%SZ'; -our $dt_parser = DateTime::Format::Mail->new(loose => 1); # main function # FIXME: takes too many args, cleanup @@ -89,8 +89,9 @@ sub utf8_header { sub feed_date { my ($date) = @_; - my $dt = $dt_parser->parse_datetime($date); - $dt ? $dt->strftime(DATEFMT) : 0; + my @t = eval { strptime($date) }; + + scalar(@t) ? strftime(DATEFMT, @t) : 0; } # returns 0 (skipped) or 1 (added)