#!/usr/bin/perl

#Blakes ING Direct get my acount information perl script.
#Use at your own risk, everything is done over SSL and cookies are only for this session (not saved to disk)
#This is pretty much taylored for my account summary page, so it may not work for you.
#Questions/comments: me@blakecrosby.com

#We are going to need some nice info from you so that we can get your account balance!
$accountnum = '000000';	#your account number
$accountpass = '00000';	#your pin number

#load libwwwperl
use HTML::TokeParser;
use LWP::UserAgent;
use Crypt::SSLeay;

$ua = LWP::UserAgent->new;

$ua->agent('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'); 

#need cookie support;
use HTTP::Cookies;
$ua->cookie_jar(HTTP::Cookies->new(file => "lwpcookies.txt",
				     autosave => 1));


#sweeet we have that special magic number :) now lets do stuff wwith it. Log in!
$req = HTTP::Request->new(POST => 'https://secure.ingdirect.ca/InitialINGDirect.html');
$req->content_type('application/x-www-form-urlencoded');
$req->content("command=login&locale=en_CA&device=web&ACN=$accountnum&PIN=$accountpass&GO.x=18&GO.y=7");
$res = $ua->request($req);

if ($res->is_success) {

}
else {
        print "Error: " . $res->status_line . "\n";
}

$req = HTTP::Request->new(GET => 'https://secure.ingdirect.ca/INGDirect.html?command=displayAccountSummary');
$req->header('Accept' => 'text/html');
# send request
$res = $ua->request($req);

$stream = HTML::TokeParser->new( \$res->content ) or die $!;

#$stream->get_tag("table");


$tag = $stream->get_tag("tr");
$tag = $stream->get_tag("tr");
$tag = $stream->get_tag("tr");
$tag = $stream->get_tag("tr");
$tag = $stream->get_tag("tr");
$tag = $stream->get_tag("tr");
$tag = $stream->get_tag("tr");
$tag = $stream->get_tag("tr");
$tag = $stream->get_tag("tr");
$tag = $stream->get_tag("tr");
$tag = $stream->get_tag("tr");
        #if ($tag->[1]{color} eq '#003366' and $tag->[1]{face} eq 'arial') {
        $stream->get_tag("td");
        $stream->get_tag("td");
        $stream->get_tag("td");
        $stream->get_tag("td");   
	$stream->get_tag("td");
        $stream->get_tag("td");
        $stream->get_tag("td");
        $balance = $stream->get_trimmed_text('/td');
        #}


while ( $tag = $stream->get_tag("tr")) {
#        if ($tag->[1]{color} eq '#003366' and $tag->[1]{face} eq 'arial') {
	$stream->get_tag("td");
	$stream->get_tag("td");
#	$balance = $stream->get_trimmed_text('/td');
	$stream->get_tag("td");
	$stream->get_tag("td");
	$stream->get_tag("td");
        $rsp = $stream->get_trimmed_text('/td');
  #      }
}

print "Your Account Balance: \$$balance\n";


#log out gracefully :)
$req = HTTP::Request->new(GET => 'https://secure.ingdirect.ca/InitialINGDirect.html?command=displayLogout&device=web&locale=en_CA');
$req->header('Accept' => 'text/html');
# send request
$res = $ua->request($req);

