From f1747921cf00e251ea0d814d732fb8c9dc9e39cd Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 23 Aug 2015 00:02:34 +0000 Subject: .txt links return an mbox instead This improves compatibility and allows individual messages to be concatenated into an existing mbox without further modifications. "git format-patch" does something similar (but does not do "From " line escaping(!)) --- lib/PublicInbox/Mbox.pm | 12 +++++++++++- lib/PublicInbox/WWW.pm | 7 ++++--- 2 files changed, 15 insertions(+), 4 deletions(-) (limited to 'lib/PublicInbox') diff --git a/lib/PublicInbox/Mbox.pm b/lib/PublicInbox/Mbox.pm index d49e9b39..bc4d639e 100644 --- a/lib/PublicInbox/Mbox.pm +++ b/lib/PublicInbox/Mbox.pm @@ -5,6 +5,7 @@ package PublicInbox::Mbox; use strict; use warnings; use PublicInbox::MID qw/mid_compressed mid2path/; +require Email::Simple; sub thread_mbox { my ($ctx, $srch, $sfx) = @_; @@ -14,6 +15,16 @@ sub thread_mbox { } } +sub emit1 { + my $simple = Email::Simple->new(pop); + sub { + my ($response) = @_; + # single message should be easily renderable in browsers + my $fh = $response->([200, ['Content-Type'=>'text/plain']]); + emit_msg($fh, $simple); + } +} + sub emit_msg { my ($fh, $simple) = @_; # Email::Simple object @@ -52,7 +63,6 @@ sub emit_mbox { $fh = PublicInbox::MboxGz->new($fh) if $sfx; require PublicInbox::GitCatFile; - require Email::Simple; my $mid = mid_compressed($ctx->{mid}); my $git = PublicInbox::GitCatFile->new($ctx->{git_dir}); my %opts = (offset => 0); diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm index 33c71101..86c64fb6 100644 --- a/lib/PublicInbox/WWW.pm +++ b/lib/PublicInbox/WWW.pm @@ -157,11 +157,12 @@ sub mid2blob { } } -# /$LISTNAME/m/$MESSAGE_ID.txt -> raw original +# /$LISTNAME/m/$MESSAGE_ID.txt -> raw mbox sub get_mid_txt { my ($ctx, $cgi) = @_; - my $x = mid2blob($ctx); - $x ? [ 200, [ 'Content-Type' => 'text/plain' ], [ $$x ] ] : r404(); + my $x = mid2blob($ctx) or return r404(); + require PublicInbox::Mbox; + PublicInbox::Mbox::emit1($x); } # /$LISTNAME/m/$MESSAGE_ID.html -> HTML content (short quotes) -- cgit v1.2.3-24-ge0c7