X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FFeed.pm;h=f2285a686d22f2a019da6c859d52ff84f860c962;hb=956abe9ad5f13a0d1755262be412d6a54fda72e9;hp=74d0bbde476f069642526d06329e4161762f9b65;hpb=50f7b8e95db516104cef237bb0a555a566ff150e;p=public-inbox.git 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} = '
';
 	$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 {
 	"
page: $next$latest
"; } -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;