EPFL-Net-ipv6Test
view release on metacpan or search on metacpan
lib/EPFL/Net/ipv6Test.pm view on Meta::CPAN
Return the AAAA DNS record, the server and the title.
Example:
{
'dns_aaaa' => '2400:cb00:2048:1::6814:e42a',
'server' => 'cloudflare',
'title' => 'EPFL news'
}
or
{'dns_aaaa' => 'null', 'error' => 'no AAAA record'}
=cut
sub getWebServer {
my $domain = shift;
return if not defined $domain;
return p_getWebAPI( $WEB_SERVER, $domain, 1 );
}
=head2 getWebDns( $domain )
Return DNS servers.
Example:
{'dns_ok' => 1, 'dns_servers' => ['stisun1.epfl.ch', 'stisun2.epfl.ch']}
or
{'dns_ok' => 0, 'dns_servers' => []}
=cut
sub getWebDns {
my $domain = shift;
return if not defined $domain;
return p_getWebAPI( $WEB_DNS, $domain, 0 );
}
=head1 PRIVATE SUBROUTINES/METHODS
=head2 p_getWebAPI
Return the response from the API.
=cut
sub p_getWebAPI {
my ( $api, $domain, $withScheme ) = @_;
my $ua = p_createUserAgent();
my $url = p_buildUrl( $api, $domain, $withScheme );
my $response = p_getUrl( $ua, $url );
if ( $response->is_success ) {
my $struct = from_json( $response->decoded_content );
return $struct;
}
return;
}
=head2 p_createUserAgent
Return a LWP::UserAgent.
LWP::UserAgent objects can be used to dispatch web requests.
=cut
sub p_createUserAgent {
my $ua = LWP::UserAgent->new;
$ua->timeout($TIMEOUT);
$ua->agent('IDevelopBot - v1.0.0');
$ua->env_proxy;
$ua->max_redirect($MAX_REDIRECT);
return $ua;
}
=head2 p_getUrl
Dispatch a GET request on the given $url
The return value is a response object. See HTTP::Response for a description
of the interface it provides.
=cut
sub p_getUrl {
my ( $ua, $url ) = @_;
return $ua->get($url);
}
=head2 p_buildUrl
Return the correct url to call for the API.
=cut
sub p_buildUrl {
my ( $path, $domain, $withScheme ) = @_;
my $url = $path . '?url=' . $domain;
if ($withScheme) {
$url .= '&scheme=http';
}
return $url;
}
=head1 AUTHOR
William Belle, C<< <william.belle at gmail.com> >>
=head1 BUGS AND LIMITATIONS
Please report any bugs or feature requests here
( run in 0.843 second using v1.01-cache-2.11-cpan-6aa56a78535 )