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 )