- # http://www.iana.org/assignments/media-types/application/gzip
- # http://www.iana.org/assignments/media-types/application/mbox
- my $fh = $response->([200, ['Content-Type' => "application/$type"]]);
- $fh = PublicInbox::MboxGz->new($fh) if $sfx;
-
- require PublicInbox::GitCatFile;
- my $mid = mid_compress($ctx->{mid});
- my $git = PublicInbox::GitCatFile->new($ctx->{git_dir});
- my %opts = (offset => 0);
- my $nr;
- do {
- my $res = $srch->get_thread($mid, \%opts);
- my $msgs = $res->{msgs};
- $nr = scalar @$msgs;
- while (defined(my $smsg = shift @$msgs)) {
- my $msg = eval {
- my $p = 'HEAD:'.mid2path($smsg->mid);
- Email::Simple->new($git->cat_file($p));
- };
- emit_msg($fh, $msg) if $msg;
- }
+sub thread_mbox {
+ my ($ctx, $over, $sfx) = @_;
+ require PublicInbox::MboxGz;
+ my $msgs = $ctx->{msgs} = $over->get_thread($ctx->{mid}, {});
+ return [404, [qw(Content-Type text/plain)], []] if !@$msgs;
+ $ctx->{prev} = $msgs->[-1];
+ $ctx->{over} = $over; # bump refcnt
+ PublicInbox::MboxGz->response($ctx, \&thread_cb, $msgs->[0]->subject);
+}