Finance-Card-Citibank
view release on metacpan or search on metacpan
lib/Finance/Card/Citibank.pm view on Meta::CPAN
return $tree unless ref($tree) eq 'ARRAY';
# Recurse on any elements that have arrays for content
$_->{content} = _collapse( $_->{content} ) for ( @{$tree} );
# The passed array can be converted to a hash if all of it's nodes have
# unique names
my %a;
if ( _is_unique($tree) ) {
$a{ $_->{name} } = $_->{content} for ( @{$tree} );
} else # Duplicate names can be converted to an array
{
my %b;
$b{ $_->{name} }++ for @{$tree};
# grep(!$b{$_->{name}}++, @{$tree});
( $b{$_} > 1 ) && ( $a{$_} = [] ) for keys %b;
for ( @{$tree} ) {
push( @{ $a{ $_->{name} } }, $_->{content} ), next
if $b{ $_->{name} } > 1;
$a{ $_->{name} } = $_->{content};
# ($b{$_->{name}} > 1) ? push(@{$a{$_->{name}}}, $_->{content}) :
# ($a{$_->{name}} = $_->{content});
}
}
return \%a;
}
package Finance::Card::Citibank::Account;
use base qw(Class::Accessor::Fast);
__PACKAGE__->mk_accessors(
qw(balance name sort_code account_no position statement));
1;
__END__
# Below is stub documentation for your module. You'd better edit it!
=head1 NAME
Finance::Card::Citibank - Check your Citigroup credit card accounts from Perl
=head1 SYNOPSIS
use Finance::Card::Citibank;
my @accounts = Finance::Card::Citibank->check_balance(
username => "xxxxxxxxxxxx",
password => "12345",
);
foreach (@accounts) {
printf "%20s : %8s / %8s : USD %9.2f\n",
$_->name, $_->sort_code, $_->account_no, $_->balance;
}
=head1 DESCRIPTION
This module provides a rudimentary interface to Citigroup's credit card
balances. You will need either C<Crypt::SSLeay> or C<IO::Socket::SSL>
installed for HTTPS support to work. Version 2.01 was a re-write to
use the OFX interface rather than screen scraping. This should make
the module more stable as the screen scrapping method required updates
whenever there were changes to Citigroup's site.
=head1 CLASS METHODS
=head2 check_balance()
check_balance( usename => $u, password => $p )
Return an array of account objects, one for each of your bank accounts.
=head1 OBJECT METHODS
$ac->name
$ac->sort_code
$ac->account_no
Return the account name, sort code and the account number. The sort code is
just the name in this case, but it has been included for consistency with
other Finance::Bank::* modules.
$ac->balance
Return the account balance as a signed floating point value.
=head1 WARNING
This warning is verbatim from Simon Cozens' C<Finance::Bank::LloydsTSB>,
and certainly applies to this module as well.
This is code for B<online banking>, and that means B<your money>, and
that means B<BE CAREFUL>. You are encouraged, nay, expected, to audit
the source of this module yourself to reassure yourself that I am not
doing anything untoward with your banking data. This software is useful
to me, but is provided under B<NO GUARANTEE>, explicit or implied.
=head1 THANKS
Simon Cozens for C<Finance::Bank::LloydsTSB>. The interface to this module,
some code and the pod were all taken from Simon's module.
Brandon Fosdick's for his Finance::OFX module. I was unable to use the
modules outright as their is quite a bit that differs between bank and
credit card OFX, but some of his parsing routines were very helpful.
Jon Keller added the ability to pull multiple accounts.
=head1 AUTHOR
Mark Grimes, E<lt>mgrimes@cpan.orgE<gt>
=for perl-template id="=head1 AUTHOR" md5sum=11d321cd698d426d0121184a785cc216
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2010 by Mark Grimes.
This is free software; you can redistribute it and/or modify it under
( run in 0.786 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )