App-news
view release on metacpan or search on metacpan
script/news view on Meta::CPAN
my $date = $headers->header("date");
my $dt = DateTime::Format::Mail->new->loose->parse_datetime($date);
$date = [$dt->ymd, sprintf("%02d:%02d", $dt->hour, $dt->minute)];
my $newsgroups = [split(/\s*,\s*/, decode("MIME-Header", $headers->header("newsgroups")) || "")];
$group ||= "@$newsgroups";
my $references = [split(/\s+/, decode("MIME-Header", $headers->header("references")) || "")];
my $body = join("", @$article);
$body =~ s/\s*<\S*?@\S*?>//g; # remove email addresses
$body =~ s/\s*"\S*?@\S*?"//g; # remove email addresses
if ($headers->header('content-type')) {
my ($charset) = $headers->header('content-type') =~ /charset=['"]?([^;'"]*)/;
$body = decode($charset, $body) if $charset;
}
my $value = {
id => $id,
group => $group,
from => $from,
subject => $subject,
date => $date,
newsgroups => $newsgroups,
references => $references,
html_body => html_unwrap($body),
script/news view on Meta::CPAN
my $nntp = Net::NNTP->new() or return $c->render(template => 'noserver');
$nntp->authinfo($username, $password) if $username and $password;
my $article = [];
push(@$article, "From: $name\r\n");
push(@$article, "Subject: $subject\r\n");
push(@$article, "Newsgroups: $group\r\n");
push(@$article, "References: $references\r\n") if $references;
push(@$article, "Supersedes: $supersedes\r\n") if $supersedes;
push(@$article, "MIME-Version: 1.0\r\n");
push(@$article, "Content-Type: text/plain; charset=UTF-8\r\n");
push(@$article, "Content-Transfer-Encoding: 8bit\r\n");
push(@$article, "\r\n");
push(@$article, map { "$_\r\n" } split(/\r?\n/, encode('UTF-8', $body)));
app->log->debug(join("", @$article));
my $ok = $nntp->post($article);
$cache->set("$group list " => undef) if $ok; # includes space and no page number
$nntp->quit;
$c->render('posted', group => $group, ok => $ok);
} => 'post';
( run in 0.224 second using v1.01-cache-2.11-cpan-4d50c553e7e )