From 55c13112d18616607d2d3eba159ae18dcb66a568 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 29 Nov 2017 09:33:17 +0000 Subject: search: allow downloading search results as mbox Allowing downloading of all search results as an gzipped mboxrd file can be convenient for some users. --- lib/PublicInbox/SearchView.pm | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'lib/PublicInbox/SearchView.pm') diff --git a/lib/PublicInbox/SearchView.pm b/lib/PublicInbox/SearchView.pm index 39400d6d..3eff7087 100644 --- a/lib/PublicInbox/SearchView.pm +++ b/lib/PublicInbox/SearchView.pm @@ -21,8 +21,11 @@ sub noop {} sub sres_top_html { my ($ctx) = @_; my $q = PublicInbox::SearchQuery->new($ctx->{qp}); - my $code = 200; + my $x = $q->{x}; + my $query = $q->{'q'}; + return PublicInbox::Mbox::mbox_all($ctx, $query) if $x eq 'm'; + my $code = 200; # double the limit for expanded views: my $opts = { limit => $LIM, @@ -33,7 +36,7 @@ sub sres_top_html { my ($mset, $total, $err, $cb); retry: eval { - $mset = $ctx->{srch}->query($q->{'q'}, $opts); + $mset = $ctx->{srch}->query($query, $opts); $total = $mset->get_matches_estimated; }; $err = $@; @@ -55,7 +58,6 @@ retry: $ctx->{-html_tip} = "
\n[No results found]

"; $cb = *noop; } else { - my $x = $q->{x}; return adump($_[0], $mset, $q, $ctx) if $x eq 'A'; $ctx->{-html_tip} = search_nav_top($mset, $q, $ctx) . "\n\n"; @@ -164,6 +166,9 @@ sub search_nav_top { } my $A = $q->qs_html(x => 'A', r => undef); $rv .= qq{|Atom feed]}; + my $m = $q->qs_html(x => 'm', r => undef); + warn "m: $m\n"; + $rv .= qq{\n\t\t\t\t\t\tdownload: mbox.gz}; } sub search_nav_bot { @@ -327,7 +332,7 @@ sub qs_html { $qs .= "&r"; } if (my $x = $self->{x}) { - $qs .= "&x=$x" if ($x eq 't' || $x eq 'A'); + $qs .= "&x=$x" if ($x eq 't' || $x eq 'A' || $x eq 'm'); } $qs; } -- cgit v1.2.3-24-ge0c7