Cookie

 view release on metacpan or  search on metacpan

lib/Cookie/Domain.pm  view on Meta::CPAN

145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
    $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

733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
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.770 second using v1.01-cache-2.11-cpan-d6f9594c0a5 )