Asterisk-LCR
view release on metacpan or search on metacpan
lib/Asterisk/LCR/Importer/CanonicalCSV.pm view on Meta::CPAN
Asterisk::LCR::Importer::CanonicalCSV
=head1 SYNOPSIS
use Asterisk::LCR::Importer::CanonicalCSV;
my $import = Asterisk::LCR::Importer::CanonicalCSV->new ( file => 'myfile.csv' );
my $rates = $import->rates();
=cut
package Asterisk::LCR::Importer::CanonicalCSV;
use base qw /Asterisk::LCR::Importer/;
use Asterisk::LCR::Route;
use Asterisk::LCR::Locale;
use warnings;
use strict;
sub validate
{
my $self = shift;
my $file = $self->target();
-f $file or do {
die 'asterisk/lcr/importer/canonicalcsv/file/inexistent';
return 0;
};
return 1;
}
sub get_data
{
my $self = shift;
my $file = $self->target();
my @res = ();
open FP, "<$file" or die "Cannot read-open $file. Reason: $!";
$_ = <FP>;
while (<FP>)
{
chomp;
push @res, $_;
}
close FP;
return \@res;
}
##
# $self->rates();
# ---------------
# Returns a { <international_code> => <rate> } hash reference
##
sub rates
{
my $self = shift;
my $locale = Asterisk::LCR::Locale->new ("fix_intl");
$self->{rates} ||= do {
my $data = $self->get_data();
my $res = {};
for (@{$data})
{
my ($prefix, $label, $provider, $currency, $rate, $connection_fee, $first_increment, $increment) = split /\s*,\s*/, $_;
$prefix = $locale->local_to_global ($prefix);
$res->{$prefix} = Asterisk::LCR::Route->new (
connection_fee => $connection_fee,
first_increment => $first_increment,
increment => $increment,
currency => $currency,
rate => $rate,
provider => $provider,
label => $label,
prefix => $prefix,
);
}
$res;
};
return $self->{rates};
}
1;
__END__
( run in 1.807 second using v1.01-cache-2.11-cpan-a5162978ef8 )