Google-DNS
view release on metacpan or search on metacpan
lib/Google/DNS.pm view on Meta::CPAN
use strict;
use warnings;
use Carp qw/croak/;
use URI::Escape qw/uri_escape/;
use HTTP::Tiny;
use JSON::PP qw/decode_json/;
use Class::Accessor::Lite (
rw => [qw/
cd
type
endpoint
ua
/],
);
our $VERSION = '0.02';
sub new {
my $class = shift;
my %args = @_;
bless {
cd => ($args{cd} || $args{dnssec}) ? 1 : 0,
type => $args{type} || '',
endpoint => $args{endpoint} || 'https://dns.google.com/resolve',
ua => $args{ua} || HTTP::Tiny->new,
}, $class;
}
sub resolve {
my ($self, $domain, $raw) = @_;
croak "require domain" unless $domain;
my %query = (name => $domain);
if ($self->cd) {
$query{cd} = $self->cd;
}
if ($self->type) {
$query{type} = $self->type;
}
my $query_string = join('&', map { uri_escape($_).'='.uri_escape($query{$_}) } keys %query);
my $res = $self->ua->get($self->endpoint.'?'. $query_string);
croak "wrong response:$res->{status} $res->{reason}" unless $res->{success};
my $json = $res->{content};
return $json if $raw;
return decode_json($json);
}
sub data {
my ($self, $domain, $delimi) = @_;
unless (defined $delimi) {
( run in 0.797 second using v1.01-cache-2.11-cpan-2b1a40005be )