File Coverage

blib/lib/WWW/Mail15.pm
Criterion Covered Total %
statement 22 79 27.8
branch 0 16 0.0
condition n/a
subroutine 7 17 41.1
pod 1 7 14.2
total 30 119 25.2


line stmt bran cond sub pod time code
1             package WWW::Mail15;
2 1     1   790 use Carp;
  1         3  
  1         74  
3 1     1   5 use base 'WWW::Mechanize';
  1         2  
  1         1392  
4 1     1   328473 use 5.006;
  1         4  
  1         41  
5 1     1   7 use strict;
  1         2  
  1         36  
6 1     1   6 use warnings;
  1         2  
  1         773  
7              
8             our $VERSION = '0.01';
9              
10             sub new {
11 1     1 1 791 my $class = shift;
12 1         10 my $self = $class->SUPER::new();
13 1         25833 $self->cookie_jar({});
14 1         332 return $self;
15             }
16              
17             sub login {
18 0     0 0   my ($self,$user,$pass) = @_;
19 0           my $resp = $self->get("http://www.mail15.com/");
20 0 0         $resp->is_success || croak $resp->error_as_HTML;
21 0           $self->form(2);
22 0           $self->field(user => $user);
23 0           $self->field(pass => $pass);
24 0           $resp = $self->submit();
25 0 0         $resp->is_success || croak $resp->error_as_HTML;
26 0 0         die "cannot login! (format changed?)" if $self->res->header('title') !~ /Folders list/;
27 0           $self->get($self->res->request->uri);
28 0           $self->{_folders} = $self->parse_folders;
29 0 0         croak "Couldn't read folder list " unless $self->{_folders};
30 0           return 1;
31             }
32              
33             sub folders {
34 0     0 0   my $self = shift;
35 0 0         croak "Not logged in!" unless $self->{_folders};
36 0           return map { keys %{$_} } @{$self->{_folders}};
  0            
  0            
  0            
37             }
38              
39             sub read_folder {
40 0     0 0   my ($self,$fnum) = @_;
41 0 0         croak "Not logged in!" unless $self->{_folders};
42 0           my($resp) = $self->get(values %{$self->{_folders}[$fnum]});
  0            
43 0 0         $resp->is_success || croak $resp->error_as_HTML;
44 0           $self->{_folder_mails}->{$fnum} = $self->parse_mails;
45             }
46            
47             sub parse_folders{
48 0     0 0   my($self) = @_;
49 0           my(@p) = (grep { $$_[0] =~ /mailbox\.php.*mailb/ } @{$self->links});
  0            
  0            
50 0           my(@folders);
51 0           foreach my $folder (@p){
52 0           push @folders , {$$folder[1] => $$folder[0]};
53             }
54 0           return \@folders;
55             }
56              
57             sub parse_mails {
58 0     0 0   my($self) = @_;
59 0           my(@p) = (grep { $$_[0] =~ /message\.php.*index/ } @{$self->links});
  0            
  0            
60 0           my(@mails);
61 0           for (my $i=0; $i<$#p ; $i+=2) {
62 0           push @mails , WWW::Mail15::Message->new ($self,$p[$i]->[0],$p[$i]->[1],$p[$i+1]->[1]);
63             }
64 0           return \@mails;
65             }
66              
67             sub get_mail {
68 0     0 0   my($self, $fnum, $mnum) = @_;
69 0           return $self->{_folder_mails}->{$fnum}->[$mnum];
70             }
71              
72             package WWW::Mail15::Message;
73             @WWW::Mail15::Message::ISA = qw(WWW::Mail15);
74              
75 1     1   1045 use Mail::Audit;
  1         38203  
  1         8  
76              
77             sub new {
78 0     0     my ($class,$parent,$url,$from,$subj) = @_;
79            
80 0           my $self = $class->SUPER::new();
81 0           $self -> {_parent} = $parent;
82 0           $self -> {_url} = $url;
83 0           $self -> {_from} = $from;
84 0           $self -> {_subj} = $subj;
85            
86 0           return $self;
87             }
88              
89              
90 0     0     sub subject { $_[0]->{_subj} }
91              
92             sub retrieve {
93 0     0     my $self = shift;
94 0           my $resp = $self->{_parent}->get($self-> {_url});
95 0 0         $resp->is_success || croak $resp->error_as_HTML;
96 0           my($text) = $self->{_parent}->content() =~ /
(.*)<\/pre>/si; 
97            
98 0           return Mail::Audit->new(data => \$text);
99             }
100              
101              
102             sub delete {
103 0     0     my $self = shift;
104             }
105              
106             1;
107             __END__