package Finance::Bank::JSONFactory; use strict; use version; our $VERSION = qv('0.01'); # load all available bank classes use Finance::Bank::PC; use Finance::Bank::CIBC; # make a lookup hash for bank_name to class name my $bank_class = { 'pc' => 'Finance::Bank::PC', 'cibc-nurey' => 'Finance::Bank::CIBC', 'cibc-ilia' => 'Finance::Bank::CIBC', }; sub accounts { my ($server, @params) = @_; my $args = shift @params; my $accounts; my $bank = create_bank($args); if ( $bank ) { $accounts = $bank->accounts(); } return $accounts; } sub details { my ($server, @params) = @_; my $args = shift @params; my $details; my $bank = create_bank($args); if ( $bank ) { $details = $bank->details($args->{account_name}); } return $details; } sub create_bank { my $args = shift; my $class = $bank_class->{ $args->{bank_id} }; my $bank; my $cache_expiry; if ( $class ) { if ( $args->{card_number} eq 'XXX' ) { $cache_expiry = 0; # use the existing cache files for testing } $bank = $class->new({ bank_id => $args->{bank_id}, card_number=>$args->{card_number}, password=>$args->{password}, cache_path=>$args->{cache_path}, cache_expiry=>$cache_expiry, }); } return $bank; } 1;