/usr/share/perl5/WWW/Topica/Mail.pm is in libwww-topica-perl 0.6-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | package WWW::Topica::Mail;
use strict;
=pod
=head1 NAME
WWW::Topica::Mail - parse a single Topica mailing list mail
=head1 SYNOPSIS
my $index = WWW::Topic::Index->new($index_html);
foreach my $mess_id ($index->message_ids) {
# the mail has some information and also provides a link to the reply ...
my $mail = WWW::Topica::Mail->new($topica->fetch_mail($mess_id), $mess_id);
# which has other information (like the un-htmled mail and the email address) ...
my $reply = WWW::Topica::Reply->new($topica->fetch_reply($mail->id, $mail->eto), $mail->id, $mail->eto);
}
print "Next offset is ".$index->next."\n";
print "Previous offset is ".$index->prev."\n";
=head1 DESCRIPTION
Used to parse a single message page from Topica.com's mailing list indexes.
Message pages have the subject and the date and time of the mail being sent as
well as a full name of each sender.
=head1 METHODS
=cut
=head2 new <page html> <id>
Takes the page html and the message-id and parses the html.
=cut
sub new {
my ($class, $html, $id) = @_;
my $self = { id => $id };
bless $self, $class;
$self->parse($html);
return $self;
}
=head2 parse <html>
Parse the html to get message ids and next & prev offsets.
=cut
sub parse {
my ($self, $html) = @_;
($self->{eto},undef,$self->{from}) = ($html =~ m!window.open\('/lists/[^/]+/read/post.html\?mode\=replytosender\&mid=\d+\&eto\=([^']+)'(.+?)return true">(.+?)</A>!s);
if (!defined $self->{eto}) {
($self->{from}) = ($html =~ m!<FONT FACE\="Geneva,Verdana,Sans-Serif" SIZE\="-2"> ([^<]+)</FONT>!s);
}
(undef,$self->{date}) = ($html =~ m!http://lists.topica.com/lists/read/images/icon_clock.gif(.+?)<NOBR>(.+?) <\/NOBR>!s);
(undef, $self->{subject}) = ($html =~ m!<FONT CLASS\="headline"(.+?)COLOR="#990099"><B>(.+?)</B>!s);
($self->{body}) = ($html =~ m! <FONT FACE\="Geneva,Verdana,Sans-Serif" SIZE\="-2">(.+?)</FONT>!s);
}
=head2 id
Get the id of this mail
=cut
sub id {
return $_[0]->{id};
}
=head2 eto
Get the eto of the next reply we need to get
=cut
sub eto {
my $self = shift;
return $self->{eto};
}
=head2 date
Get the date of this mail
=cut
sub date {
my $date = $_[0]->{date} || "";
return $date;
}
=head2 subject
The subject of the mail
=cut
sub subject {
my $subject = $_[0]->{subject} || "";
return $subject;
}
=head2 from
Get the name of the person it was from
=cut
sub from {
my $from = $_[0]->{from} || "";
return $from;
}
=head2 body
Get the body of the mail.
=cut
sub body {
my $body = $_[0]->{body} || "";
return $body;
}
1;
=head1 AUTHOR
Simon Wistow <simon@thegestalt.org>
=head1 COPYRIGHT
Copyright (c) 2004, Simon Wistow
=cut
|