Geo-What3Words
view release on metacpan or search on metacpan
lib/Geo/What3Words.pm view on Meta::CPAN
my $JSONXS = Cpanel::JSON::XS->new->allow_nonref(1);
sub new {
my ($class, %params) = @_;
my $self = {};
$self->{api_endpoint} = $params{api_endpoint} || 'https://api.what3words.com/v3/';
$self->{key} = $params{key} || die "API key not set";
$self->{language} = $params{language};
$self->{logging} = $params{logging};
## _ua is used for testing. But could also be used to
## set proxies or such
$self->{ua} = $params{ua} || HTTP::Tiny->new;
my $version = $Geo::What3Words::VERSION || '';
$self->{ua}->agent("Perl Geo::What3Words $version");
return bless($self, $class);
}
sub ping {
my $self = shift;
## http://example.com/some/path => example.com
## also works with IP addresses
my $host = URI->new($self->{api_endpoint})->host;
$self->_log("pinging $host...");
my $netping = Net::Ping->new('external');
my $res = $netping->ping($host);
$self->_log($res ? 'available' : 'unavailable');
return $res;
}
lib/Geo/What3Words.pm view on Meta::CPAN
#a => 1,
key => $self->{key},
format => 'json',
%$rh_params
};
foreach my $key (keys %$rh_fields) {
delete $rh_fields->{$key} if (!defined($rh_fields->{$key}));
}
my $uri = URI->new($self->{api_endpoint} . $method_name);
$uri->query_form($rh_fields);
my $url = $uri->as_string;
$self->_log("GET $url");
my $response = $self->{ua}->get($url);
if (!$response->{success}) {
warn "got failed response from $url: " . $response->{status};
$self->_log("got failed response from $url: " . $response->{status});
return;
( run in 0.794 second using v1.01-cache-2.11-cpan-2b1a40005be )