diff options
author | Eric Wong <e@80x24.org> | 2015-08-15 09:28:32 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2015-08-15 19:15:36 +0000 |
commit | d7fcdec712accc212bcfa35e50ade1233eb9beb3 (patch) | |
tree | 50e4900b3a21ede89b76716417080113009f1b75 /lib/PublicInbox/Search.pm | |
parent | 885250c3c289c96764e0eb9f432a389136d07088 (diff) | |
download | public-inbox-d7fcdec712accc212bcfa35e50ade1233eb9beb3.tar.gz |
Quit repeating ourselves and use a common MID module instead.
Diffstat (limited to 'lib/PublicInbox/Search.pm')
-rw-r--r-- | lib/PublicInbox/Search.pm | 31 |
1 files changed, 6 insertions, 25 deletions
diff --git a/lib/PublicInbox/Search.pm b/lib/PublicInbox/Search.pm index 15bb9f62..e88bfb16 100644 --- a/lib/PublicInbox/Search.pm +++ b/lib/PublicInbox/Search.pm @@ -6,25 +6,22 @@ use strict; use warnings; use PublicInbox::SearchMsg; use base qw/Exporter/; -use Digest::SHA qw//; use Search::Xapian qw/:standard/; require PublicInbox::View; use Date::Parse qw/str2time/; use POSIX qw//; use Email::MIME; +use PublicInbox::MID qw/mid_clean mid_compressed/; -our @EXPORT = qw/xpfx mid_compressed/; +our @EXPORT = qw/xpfx/; use constant { TS => 0, - SHA1HEX_LEN => 40, SCHEMA_VERSION => 0, LANG => 'english', QP_FLAGS => FLAG_PHRASE|FLAG_BOOLEAN|FLAG_LOVEHATE|FLAG_WILDCARD, }; -use constant MID_MAX => SHA1HEX_LEN; - # setup prefixes my %bool_pfx_internal = ( type => 'T', # "mail" or "ghost" @@ -54,13 +51,6 @@ while (my ($k, $v) = each %all_pfx) { my $mail_query = Search::Xapian::Query->new(xpfx('type') . 'mail'); -# this is idempotent -sub mid_compressed { - my ($mid) = @_; - return $mid if (length($mid) <= MID_MAX); - Digest::SHA::sha1_hex($mid); -} - sub new { my ($class, $git_dir, $writable) = @_; # allow concurrent versions for easier rollback: @@ -86,7 +76,7 @@ sub add_message { my $db = $self->{xdb}; my $doc_id; - my $mid = clean_mid($mime->header('Message-ID')); + my $mid = mid_clean($mime->header('Message-ID')); $mid = mid_compressed($mid); my $was_ghost = 0; my $ct_msg = $mime->header('Content-Type') || 'text/plain'; @@ -211,7 +201,7 @@ sub remove_message { my ($self, $mid) = @_; my $db = $self->{xdb}; my $doc_id; - $mid = clean_mid($mid); + $mid = mid_clean($mid); $mid = mid_compressed($mid); $db->begin_transaction; @@ -241,7 +231,7 @@ sub query { # given a message ID, get replies to a message sub get_replies { my ($self, $mid, $opts) = @_; - $mid = clean_mid($mid); + $mid = mid_clean($mid); $mid = mid_compressed($mid); my $qp = $self->qp; my $irt = $qp->parse_query("inreplyto:$mid", 0); @@ -344,15 +334,6 @@ sub date_range_processor { $_[0]->{drp} ||= Search::Xapian::DateValueRangeProcessor->new(TS); } -sub clean_mid { - my ($mid) = @_; - defined($mid) or die "no Message-ID"; - # MDA->precheck did more checking for us - $mid =~ s/\A\s*<?//; - $mid =~ s/>?\s*\z//; - $mid; -} - sub link_message { my ($self, $smsg, $is_ghost) = @_; @@ -410,7 +391,7 @@ sub link_message_to_parents { sub lookup_message { my ($self, $mid) = @_; - $mid = clean_mid($mid); + $mid = mid_clean($mid); $mid = mid_compressed($mid); my $doc_id = $self->find_unique_doc_id('mid', $mid); |