Cookie
view release on metacpan or search on metacpan
lib/Cookie/Domain.pm view on Meta::CPAN
145146147148149150151152153154155156157158159160161162163164165
$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
733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764This 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.770 second using v1.01-cache-2.11-cpan-d6f9594c0a5 )