Address-PostCode-Australia
view release on metacpan or search on metacpan
lib/Address/PostCode/Australia.pm view on Meta::CPAN
Version 0.12
=cut
use 5.006;
use JSON;
use Data::Dumper;
use Address::PostCode::UserAgent;
use Address::PostCode::Australia::Place;
use Address::PostCode::Australia::Params qw(validate);
use Moo;
use namespace::autoclean;
extends 'Address::PostCode::UserAgent';
our $BASE_URL = 'https://auspost.com.au/api/postcode/search.json';
has 'auth_key' => (is => 'ro', required => 1);
=head1 DESCRIPTION
lib/Address/PostCode/Australia.pm view on Meta::CPAN
return $places;
}
#
#
# PRIVATE METHODS
sub _get_url {
my ($keys, $values) = @_;
validate($keys, $values);
my $url = $BASE_URL;
if (exists $values->{'postcode'}) {
$url .= sprintf("?q=%d", $values->{'postcode'});
}
elsif (exists $values->{'location'}) {
$url .= sprintf("?q=%s", $values->{'location'});
}
else {
die "ERROR: Missing required key postcode/location.\n";
lib/Address/PostCode/Australia/Params.pm view on Meta::CPAN
B<FOR INTERNAL USE ONLY>
=cut
use 5.006;
use strict; use warnings;
use Data::Dumper;
use parent 'Exporter';
our @EXPORT_OK = qw(validate);
sub check_num {
my ($num) = @_;
die "ERROR: Invalid NUM data type [$num]"
unless (defined $num && $num =~ /^\d+$/);
};
sub check_str {
my ($str) = @_;
lib/Address/PostCode/Australia/Params.pm view on Meta::CPAN
die "ERROR: Invalid STR data type [$str]"
if (defined $str && $str =~ /^\d+$/);
};
our $FIELDS = {
'postcode' => { check => sub { check_num(@_) }, type => 'd' },
'location' => { check => sub { check_str(@_) }, type => 's' },
'state' => { check => sub { check_str(@_) }, type => 's' },
};
sub validate {
my ($fields, $values) = @_;
die "ERROR: Missing params list." unless (defined $values);
die "ERROR: Parameters have to be hash ref" unless (ref($values) eq 'HASH');
foreach my $field (keys %{$fields}) {
die "ERROR: Received invalid param: $field"
unless (exists $FIELDS->{$field});
( run in 0.233 second using v1.01-cache-2.11-cpan-4d50c553e7e )