Source
x
#!/usr/bin/perl
#
# OpenCNAM front end because they only take 10 digits and can't filter 11 on their side.
#
use :: ;
use qw/:standard/;
use :: ;
use ;
use ;
my %params = map { $_ => ( $_ ) } ;
$ua = ::->new( => { => 0, => 3 });
sub {
my $name = shift;
my @values = ( $name );
return @values > 1
? \@values
: $values[0];
}
print "Content-Type: text/plain\n\n";
tie (my %cache, 'SDBM_File', 'cnam.dbm', | , 0640) || die $!;
my $number = $params{number};
if($number =~ m/1?\d{10}/) {
if($number =~ m/^1(\d{10})$/) {
$number = $1;
}
if($cache{"$number"}) {
print $cache{"$number"};
untie %cache;
exit;
}
my $url = "https://api.opencnam.com/v1/phone/$number?format=text";
my $res = $ua-> ( $url );
my $code = $res-> ;
if ($code eq '200') {
my $content = $res-> ;
$cache{"$number"} = $content;
print $content;
} else {
print "UNKNOWN";
}
}
untie %cache;