WWW-Postini
view release on metacpan or search on metacpan
lib/WWW/Postini.pm view on Meta::CPAN
while (defined ($token = $p->get_token())) {
last if $token->[0] eq 'E' && $token->[1] eq 'font';
if ($token->[0] eq 'T') {
next unless $token->[1] =~ /\d+ - \d+ of \d+/s;
($start_range, $end_range, $total_messages) = $token->[1] =~ /
(\d+) \s - \s (\d+)
\s of \s
(\d+)
/x;
last;
}
}
assert(defined ($total_messages), 'Total messages defined');
assert(defined ($start_range), 'Start range defined');
assert($start_range <= $total_messages, 'Valid start range');
$tag = $p->get_tag('form');
assert($tag, 'Form tag exists');
$tag = $p->get_tag('tr');
assert($tag, 'TR tag exists');
while($tag = $p->get_tag('tr')) {
next unless defined $tag->[1]->{'bgcolor'} && (
$tag->[1]->{'bgcolor'} eq '#EEEEEE'
|| $tag->[1]->{'bgcolor'} eq '#FFFFFF'
);
last unless defined $p->get_tag('font');
my ($date, $recipient, $sender) = (
$self->_get_message_field($p),
$self->_get_message_field($p),
$self->_get_message_field($p)
);
assert($date, 'Date defined');
assert($recipient, 'Recipient defined');
assert($sender, 'Sender defined');
$tag = $p->get_tag('font');
assert($tag, 'Font tag exists');
$tag = $p->get_tag('a');
assert($tag, 'Link exists');
my $url = $tag->[1]->{'href'};
assert($url, 'URL defined');
my $subject = $p->get_trimmed_text();
assert($subject, 'Subject defined');
my $uri = (split m!\?!, $url)[1];
assert($uri, 'URI defined');
my %params;
foreach my $pair (split /&/, $uri) {
my ($key, $value) = split /=/, $pair;
$params{$key} = $value;
}
$tag = $p->get_tag('font');
assert($tag, 'Font tag exists');
my $filter = $p->get_trimmed_text();
assert($filter, 'Filter defined');
push @messages, {
sender => $sender,
recipient => $recipient,
subject => $subject,
date => $date,
filter => $filter,
id => $params{'msgid'},
uid => $args{'user_id'}
};
}
last if $end_range >= $total_messages;
$page_number++;
}
};
# catch
if (defined $@ && (length $@ || ref $@)) {
if (UNIVERSAL::isa($@, 'WWW::Postini::Exception::UnexpectedResponse')) {
$@->rethrow();
} else {
throw WWW::Postini::Exception::UnexpectedResponse($@);
}
}
\@messages;
}
# get message info
sub get_message_info {
( run in 1.444 second using v1.01-cache-2.11-cpan-71847e10f99 )