Cookie
view release on metacpan or search on metacpan
lib/Cookie/Domain.pm view on Meta::CPAN
$ua->get( URL, %$req_headers );
};
if( $@ )
{
return( $self->error( "Error trying to perform an HTTP GET request to ", URL, ": $@" ) );
}
my $code = $resp->code;
# try-catch
my $data = eval
{
$resp->decoded_content( default_charset => 'utf-8', alt_charset => 'utf-8' );
};
if( $@ )
{
return( $self->error( "Error decoding response content: $@" ) );
}
my $last_mod = $resp->header( 'Last-Modified' );
my $tz;
# DateTime::TimeZone::Local will die ungracefully if the local timezeon is not set with the error:
# "Cannot determine local time zone"
lib/Cookie/Domain.pm view on Meta::CPAN
This is important to save bandwidth and useless processing.
If the file has indeed changed, L</save_as_json> is invoked to refresh the cache.
It returns the object it was called with for chaining.
=head2 decode
Takes a domain name, or rather called a host name, such as C<www.æ±äº¬.jp> or C<ä»ä½å¹´.jp> and this will return its punycode ascii representation prefixed with a so-called ASCII Compatible Encoding, a.k.a. C<ACE>. Thus, using our previous example...
Even if the host name contains non-ascii dots, they will be recognised. For example C<wwwãæ±äº¬ãjp> would still be successfully decoded to C<www.xn--1lqs71d.jp>
If the host name provided is not an international domain name (a.k.a. IDN), it is simply returned as is. Thus, if C<www.example.org> is provided, it would return C<www.example.org>
If an error occurred, it sets an error object and returns L<perlfunc/undef>. The error can then be retrieved using L<Module::Generic/error> inherited by this module.
It uses L<Net::IDN::Encode/domain_to_ascii> to perform the actual decoding.
=head2 encode
This does the reverse operation from L</decode>.
It takes a domain name, or rather called a host name, already decoded, and with its so called ASCII Compatible Encoding a.k.a. C<ACE> prefix C<xn--> such as C<xn--wmq0m700b.jp> and returns its encoded version in perl internal utf8 encoding. Using the...
Just like in L</decode>, if a non-international domain name is provided, it is returned as is. Thus, if C<www.example.org> is provided, it would return C<www.example.org>
Note that this returns the name in perl's internal utf8 encoding, so if you need to save it to an utf8 file or print it out as utf8 string, you still need to encode it in utf8 before. For example:
use Cookie::Domain;
use open ':std' => ':utf8';
my $d = Cookie::Domain->new;
say $d->encode( "xn--wmq0m700b.jp" );
( run in 0.305 second using v1.01-cache-2.11-cpan-4e96b696675 )