]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Smsg.pm
smsg: use capitalization for header retrieval
[public-inbox.git] / lib / PublicInbox / Smsg.pm
index 7a47703a25054158c4f1ef12f61cad87ef7a1627..7a2766d8ff8401e3b94b32e109b250f44ddc5da2 100644 (file)
@@ -12,7 +12,7 @@ use strict;
 use warnings;
 use base qw(Exporter);
 our @EXPORT_OK = qw(subject_normalized);
-use PublicInbox::MID qw/mid_clean mid_mime/;
+use PublicInbox::MID qw/mid_mime/;
 use PublicInbox::Address;
 use PublicInbox::MsgTime qw(msg_timestamp msg_datestamp);
 use Time::Local qw(timegm);
@@ -34,16 +34,15 @@ sub get_val ($$) {
 }
 
 sub to_doc_data {
-       my ($self, $oid, $mid0) = @_;
-       $oid = '' unless defined $oid;
+       my ($self) = @_;
        join("\n",
                $self->subject,
                $self->from,
                $self->references,
                $self->to,
                $self->cc,
-               $oid,
-               $mid0,
+               $self->{blob},
+               $self->{mid},
                $self->{bytes} // '',
                $self->{lines} // ''
        );
@@ -107,20 +106,18 @@ sub lines ($) { $_[0]->{lines} }
 
 sub __hdr ($$) {
        my ($self, $field) = @_;
-       my $val = $self->{$field};
-       return $val if defined $val;
-
-       my $mime = $self->{mime} or return;
-       my @raw = $mime->header($field);
-       $val = join(', ', @raw);
-       $val =~ tr/\t\n/  /;
-       $val =~ tr/\r//d;
-       $self->{$field} = $val;
+       $self->{lc($field)} //= do {
+               my $mime = $self->{mime} or return;
+               my $val = join(', ', $mime->header($field));
+               $val =~ tr/\r//d;
+               $val =~ tr/\t\n/  /;
+               $val;
+       };
 }
 
-sub subject ($) { __hdr($_[0], 'subject') }
-sub to ($) { __hdr($_[0], 'to') }
-sub cc ($) { __hdr($_[0], 'cc') }
+sub subject ($) { __hdr($_[0], 'Subject') }
+sub to ($) { __hdr($_[0], 'To') }
+sub cc ($) { __hdr($_[0], 'Cc') }
 
 # no strftime, that is locale-dependent and not for RFC822
 my @DoW = qw(Sun Mon Tue Wed Thu Fri Sat);
@@ -138,7 +135,7 @@ sub date ($) {
 
 sub from ($) {
        my ($self) = @_;
-       my $from = __hdr($self, 'from');
+       my $from = __hdr($self, 'From');
        if (defined $from && !defined $self->{from_name}) {
                my @n = PublicInbox::Address::names($from);
                $self->{from_name} = join(', ', @n);
@@ -179,12 +176,10 @@ sub mid ($;$) {
                $rv;
        } else {
                die "NO {mime} for mid\n" unless $self->{mime};
-               $self->_extract_mid; # v1 w/o Xapian
+               mid_mime($self->{mime}) # v1 w/o Xapian
        }
 }
 
-sub _extract_mid { mid_clean(mid_mime($_[0]->{mime})) }
-
 our $REPLY_RE = qr/^re:\s+/i;
 
 sub subject_normalized ($) {