#!/usr/bin/perl

use strict;
use warnings;

use WWW::Mechanize;
use HTML::TokeParser;
use Data::Dumper;

my $imapuser = "user" . int(rand(9) + 1);
my $pass     = "pass";
my $base     = "http://webmail.edu.ie";

my $agent = WWW::Mechanize->new(
    agent => "HEAnet-Mechanize/$imapuser",    # Nice name!
    cookie_jar => {},    # an empty, memory-only HTTP::Cookies object
    autocheck  => 1,     # some debugging.
                               );

# Get the login page.
$agent->get("$base/imp/login.php");
$agent->form_name("imp_login");
$agent->field("imapuser", $imapuser);
$agent->field("pass",     $pass);
$agent->submit();

$agent->get("$base/imp/mailbox.php?mailbox=INBOX");

#print Dumper($agent->links());
my @links = $agent->links();
my $link;
my @messages = ();
my %seen     = ();

# Extract a list of email messages.
foreach $link (@links)
{
    my $url = $link->url();
    $url =~ m/\/imp\/message.php\?index=(\d+)/;
    my $messageid = "";
    if (defined($1))
    {
        $messageid = $1;
    }
    if ("$messageid" ne "")
    {
        push(@messages, $messageid) unless $seen{$messageid}++;
    }
}

if (@messages < 1)
{
    die "$imapuser has no messages :(\n";
}

$agent->get("$base/imp/message.php?index=" . $messages[int(rand(@messages))]);

# 1 in 10 chance of not logging out.
if (int(rand(9) + 1) ne 1)
{
    $agent->get("$base/login.php?logout_reason=logout");
}

print "ok\n";
