diff options
Diffstat (limited to 'lib/PublicInbox/Feed.pm')
-rw-r--r-- | lib/PublicInbox/Feed.pm | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/lib/PublicInbox/Feed.pm b/lib/PublicInbox/Feed.pm index 74d0bbde..f2285a68 100644 --- a/lib/PublicInbox/Feed.pm +++ b/lib/PublicInbox/Feed.pm @@ -8,18 +8,18 @@ use warnings; use PublicInbox::MIME; use PublicInbox::View; use PublicInbox::WwwAtomStream; +use PublicInbox::SearchMsg; # this loads w/o Search::Xapian # main function sub generate { my ($ctx) = @_; - my $oids = recent_blobs($ctx); - return _no_thread() unless @$oids; + my $msgs = recent_msgs($ctx); + return _no_thread() unless @$msgs; - my $git = $ctx->{-inbox}->git; + my $ibx = $ctx->{-inbox}; PublicInbox::WwwAtomStream->response($ctx, 200, sub { - while (my $oid = shift @$oids) { - my $msg = $git->cat_file($oid) or next; - return PublicInbox::MIME->new($msg); + while (my $smsg = shift @$msgs) { + $ibx->smsg_mime($smsg) and return $smsg; } }); } @@ -36,9 +36,8 @@ sub generate_thread_atom { $ctx->{-html_url} = $html_url; my $msgs = $res->{msgs}; PublicInbox::WwwAtomStream->response($ctx, 200, sub { - while (my $msg = shift @$msgs) { - $msg = $ibx->msg_by_smsg($msg) and - return PublicInbox::MIME->new($msg); + while (my $smsg = shift @$msgs) { + $ibx->smsg_mime($smsg) and return $smsg; } }); } @@ -62,20 +61,19 @@ sub generate_html_index { sub new_html { my ($ctx) = @_; - my $oids = recent_blobs($ctx); - if (!@$oids) { + my $msgs = recent_msgs($ctx); + if (!@$msgs) { return [404, ['Content-Type', 'text/plain'], ["No messages, yet\n"] ]; } $ctx->{-html_tip} = '<pre>'; $ctx->{-upfx} = ''; $ctx->{-hr} = 1; - my $git = $ctx->{-inbox}->git; + my $ibx = $ctx->{-inbox}; PublicInbox::WwwStream->response($ctx, 200, sub { - while (my $oid = shift @$oids) { - my $msg = $git->cat_file($oid) or next; - my $m = PublicInbox::MIME->new($msg); - my $more = scalar @$oids; + while (my $smsg = shift @$msgs) { + my $m = $ibx->smsg_mime($smsg) or next; + my $more = scalar @$msgs; return PublicInbox::View::index_entry($m, $ctx, $more); } new_html_footer($ctx); @@ -103,7 +101,7 @@ sub new_html_footer { "<hr><pre>page: $next$latest</pre>"; } -sub recent_blobs { +sub recent_msgs { my ($ctx) = @_; my $ibx = $ctx->{-inbox}; my $max = $ibx->{feedmax}; @@ -119,7 +117,7 @@ sub recent_blobs { my $res = $srch->query('', { limit => $max, offset => $o }); my $next = $o + $max; $ctx->{next_page} = "o=$next" if $res->{total} >= $next; - return [ map { $_->{blob} } @{$res->{msgs}} ]; + return $res->{msgs}; } my $hex = '[a-f0-9]'; @@ -171,7 +169,7 @@ sub recent_blobs { } $ctx->{next_page} = "r=$last_commit" if $last_commit; - \@oids; + [ map { bless {blob => $_ }, 'PublicInbox::SearchMsg' } @oids ]; } 1; |