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 )