-sub msg_str {
- my ($ctx, $simple, $mid) = @_; # Email::Simple object
- my $header_obj = $simple->header_obj;
+# for rare cases where v1 inboxes aren't indexed w/ ->over at all
+sub no_over_raw ($) {
+ my ($ctx) = @_;
+ my $mref = $ctx->{-inbox}->msg_by_mid($ctx->{mid}) or return;
+ my $eml = PublicInbox::Eml->new($mref);
+ [ 200, res_hdr($ctx, $eml->header_str('Subject')),
+ [ msg_hdr($ctx, $eml, $ctx->{mid}) . msg_body($eml) ] ]
+}
+
+# /$INBOX/$MESSAGE_ID/raw
+sub emit_raw {
+ my ($ctx) = @_;
+ $ctx->{base_url} = $ctx->{-inbox}->base_url($ctx->{env});
+ my $over = $ctx->{-inbox}->over or return no_over_raw($ctx);
+ my ($id, $prev);
+ my $mip = $ctx->{next_arg} = [ $ctx->{mid}, \$id, \$prev ];
+ my $smsg = $ctx->{smsg} = $over->next_by_mid(@$mip) or return;
+ my $res_hdr = res_hdr($ctx, $smsg->{subject});
+ bless $ctx, __PACKAGE__;
+ $ctx->psgi_response(200, $res_hdr);
+}
+
+sub msg_hdr ($$;$) {
+ my ($ctx, $eml, $mid) = @_;
+ my $header_obj = $eml->header_obj;