line | % | coverage | branch |
164 | 100 | T | F | if (not defined $class) { } |
| 100 | T | F | elsif (ref $class) { } |
165 | 50 | T | F | if ($params) |
167 | 50 | T | F | if (my $logger = $$params{"logger"}) |
177 | 50 | T | F | if defined $$params{"supported"} |
184 | 50 | T | F | if (defined $$params{"logger"}) |
185 | 50 | T | F | unless (&Scalar::Util::blessed($$params{"logger"}) and $$params{"logger"}->can("warn") and $$params{"logger"}->can("info") and $$params{"logger"}->can("error")) |
195 | 100 | T | F | unless ($$params{"supported"}) |
196 | 50 | T | F | if (my $logger = $$params{"logger"}) |
205 | 100 | T | F | if ($cache and $ENV{"REMOTE_ADDR"}) |
208 | 50 | T | F | if ($info and $l = $info->lang) { } |
| 50 | T | F | elsif ($l = $class->_what_language) { } |
217 | 50 | T | F | if (my $rc = $cache->get($key)) |
231 | 0 | T | F | if ($$rc{'_what_language'} || $$rc{'_rlanguage'} and $info and $info->lang) |
263 | 50 | T | F | if (defined $^V and $^V ge "v5.14.0") |
264 | 50 | T | F | if ${^GLOBAL_PHASE} eq "DESTRUCT" |
266 | 100 | T | F | unless ($ENV{"REMOTE_ADDR"}) |
270 | 50 | T | F | unless ref $self |
273 | 100 | T | F | unless $cache |
276 | 50 | T | F | if (my $l = $self->_what_language) |
280 | 50 | T | F | if $cache->get($key) |
335 | 100 | T | F | unless ($$self{"_slanguage"}) |
380 | 100 | T | F | unless ($$self{"_slanguage"}) |
401 | 100 | T | F | unless ($$self{"_slanguage"}) |
430 | 100 | T | F | unless ($$self{"_slanguage"}) |
450 | 100 | T | F | unless ($$self{"_rlanguage"}) |
473 | 50 | T | F | if (defined $http_accept_language) |
476 | 50 | T | F | if ($http_accept_language eq "en-uk") |
482 | 0 | T | F | if (not $_[0] =~ /^Use of uninitialized value/) |
489 | 100 | T | F | if ($l and $http_accept_language =~ /-/ and not $http_accept_language =~ qr/$l/i) |
498 | 100 | T | F | unless ($l) |
509 | 100 | T | F | if ($i18n->accepts($1, $$self{"_supported"})) |
516 | 100 | T | F | unless ($l) |
520 | 100 | T | F | if $possible =~ /..\-../ |
523 | 100 | T | F | if ($i18n->accepts($possible, $$self{"_supported"})) |
532 | 100 | T | F | if ($l) { } |
| 100 | T | F | elsif ($http_accept_language =~ /;/) { } |
535 | 100 | T | F | if (not $l =~ /^..-..$/) { } |
| 50 | T | F | elsif ($l =~ /(.+)-(..)$/) { } |
537 | 50 | T | F | if ($$self{"_slanguage"}) |
548 | 100 | T | F | if ($http_accept_language =~ /..-(..)$/) { } |
| 50 | T | F | elsif ($http_accept_language =~ /..-([a-z]{2,3})$/i) { } |
551 | 100 | T | F | unless defined $requested_sublanguage |
555 | 100 | T | F | if ($sl) { } |
| 100 | T | F | elsif ($requested_sublanguage) { } |
561 | 50 | T | F | if (my $c = $self->_code2countryname($requested_sublanguage)) { } |
575 | 50 | T | F | if ($accepts) |
578 | 50 | T | F | if ($accepts =~ /\-/) { } |
582 | 0 | T | F | if ($$self{"_cache"}) |
585 | 0 | T | F | if ($from_cache) { } |
591 | 0 | T | F | if ($$self{"_slanguage"}) |
592 | 0 | T | F | if ($variety eq "uk") |
599 | 0 | T | F | if (defined(my $c = $self->_code2countryname($variety))) |
604 | 0 | T | F | if ($$self{"_sublanguage"}) |
609 | 0 | T | F | unless ($from_cache) |
620 | 50 | T | F | if ($accepts) |
626 | 50 | T | F | if ($variety =~ /[a-z]{2,3}/ and not defined $$self{"_sublanguage"}) |
630 | 50 | T | F | if ($variety eq "uk") |
639 | 100 | T | F | if ($$self{"_cache"}) |
642 | 100 | T | F | if (defined $from_cache) { } |
656 | 50 | T | F | if (defined $results[0]) { } |
664 | 50 | T | F | if ($@ or not defined $language_name) { } |
665 | 0 | T | F | if $@ |
674 | 100 | T | F | if ($$self{"_cache"} and not defined $from_cache) |
680 | 50 | T | F | if (defined $$self{"_sublanguage"}) |
692 | 50 | T | F | if ($$self{"_slanguage"} and $$self{"_slanguage"} ne "Unknown") |
693 | 0 | T | F | if ($$self{"_rlanguage"} eq "Unknown") |
696 | 0 | T | F | if ($$self{"_rlanguage"}) |
697 | 0 | T | F | if ($l = $self->_code2language($$self{"_rlanguage"})) |
708 | 100 | T | F | if (!$$self{'_rlanguage'} || $$self{'_rlanguage'} eq 'Unknown' and length $http_accept_language == 2 || $http_accept_language =~ /^..-..$/) |
712 | 50 | T | F | unless ($$self{"_rlanguage"}) |
719 | 50 | T | F | if ($$self{"_dont_use_ip"}) |
728 | 100 | T | F | if (not defined $country and my $c = $self->_what_language) |
729 | 50 | T | F | if ($c =~ /^(..)_(..)/) { } |
| 100 | T | F | elsif ($c =~ /^(..)$/) { } |
736 | 100 | T | F | if (defined $country) |
741 | 50 | T | F | if ($$self{"_cache"}) |
746 | 50 | T | F | if ($from_cache) { } |
751 | 50 | T | F | if ($l) |
753 | 0 | T | F | if (defined $l) |
756 | 0 | T | F | if ($language_name) |
763 | 50 | T | F | if ($language_name) |
764 | 0 | T | F | if (not defined $$self{"_rlanguage"} or $$self{"_rlanguage"} eq "Unknown") |
767 | 0 | T | F | unless (exists $self->{'_slanguage'} and $$self{"_slanguage"} ne "Unknown") |
772 | 0 | T | F | if ($language_name and $language_code2 and not defined $http_accept_language) { } |
780 | 0 | T | F | unless ($code) |
781 | 0 | T | F | if ($http_accept_language and $http_accept_language ne $$self{"_rlanguage"}) |
786 | 0 | T | F | unless ($code) |
789 | 0 | T | F | if ($$self{"_rlanguage"} =~ /(.+)\s\(.+/) |
790 | 0 | T | F | if (not defined $http_accept_language or $1 ne $$self{"_rlanguage"}) |
796 | 0 | T | F | unless ($code) |
804 | 0 | T | F | if ($code) |
806 | 0 | T | F | if ($$self{'_slanguage'}) { } |
815 | 0 | T | F | if (not defined $$self{'_slanguage_code_alpha2'}) { } |
| 0 | T | F | elsif (not defined $from_cache and $$self{'_cache'} and defined $$self{'_slanguage_code_alpha2'}) { } |
853 | 100 | T | F | /^(.+)-/ ? : |
855 | 50 | T | F | if (exists $base_languages{$language_string}) |
865 | 100 | T | F | if (ref $self) |
867 | 100 | T | F | if ($$self{"_what_language"}) |
871 | 50 | T | F | if (my $info = $$self{"_info"}) |
872 | 0 | T | F | if (my $rc = $info->lang) |
880 | 100 | T | F | if (my $rc = $ENV{"HTTP_ACCEPT_LANGUAGE"}) |
881 | 100 | T | F | if (ref $self) |
887 | 50 | T | F | if (defined $ENV{"LANG"}) |
890 | 0 | T | F | if (ref $self) |
916 | 50 | T | F | if ($$self{"_country"}) |
922 | 50 | T | F | if (defined $ENV{"GEOIP_COUNTRY_CODE"}) |
926 | 100 | T | F | if ($ENV{"HTTP_CF_IPCOUNTRY"} and $ENV{"HTTP_CF_IPCOUNTRY"} ne "XX") |
934 | 100 | T | F | unless defined $ip |
939 | 100 | T | F | unless (is_ipv4($ip)) |
941 | 50 | T | F | if ($ip eq '::1') { } |
| 0 | T | F | elsif (not is_ipv6($ip)) { } |
951 | 100 | T | F | if (is_private_ip($ip)) |
955 | 100 | T | F | if (is_loopback_ip($ip)) |
960 | 50 | T | F | if ($$self{"_cache"}) |
962 | 0 | T | F | if (defined $$self{"_country"}) |
963 | 0 | T | F | if (not $$self{'_country'} =~ /\D/) { } |
975 | 50 | T | F | if ($$self{"_have_ipcountry"} == -1) |
976 | 50 | T | F | if (eval {
do {
require IP::Country
}
}) { } |
986 | 50 | T | F | if ($$self{"_have_ipcountry"}) |
988 | 0 | T | F | if ($$self{'_country'}) { } |
| 0 | T | F | elsif (is_ipv4($ip)) { } |
995 | 50 | T | F | unless (defined $$self{"_country"}) |
996 | 50 | T | F | if ($$self{"_have_geoip"} == -1) |
999 | 50 | T | F | if ($$self{"_have_geoip"} == 1) |
1002 | 50 | T | F | unless (defined $$self{"_country"}) |
1003 | 50 | T | F | if ($$self{"_have_geoipfree"} == -1) |
1007 | 50 | T | F | if ($@) { } |
1015 | 50 | T | F | if ($$self{"_have_geoipfree"} == 1) |
1016 | 0 | T | F | if (my $country = ($$self{"_geoipfree"}->LookUp($ip))[0]) |
1022 | 50 | T | F | if ($$self{"_country"} and $$self{"_country"} eq "eu") |
1025 | 50 | T | F | if (not $$self{"_country"} and eval {
do {
require LWP::Simple::WithCache;
require JSON::Parse
}
}) |
1032 | 0 | T | F | if (my $data = LWP::Simple::WithCache::get("http://www.geoplugin.net/json.gp?ip=$ip")) |
1036 | 50 | T | F | unless ($$self{"_country"}) |
1051 | 50 | T | F | unless ($@ or not defined $whois or ref $whois ne "HASH") |
1052 | 50 | T | F | if (defined $$whois{'Country'}) { } |
| 0 | T | F | elsif (defined $$whois{'country'}) { } |
1057 | 50 | T | F | if ($$self{"_country"}) |
1058 | 50 | T | F | if ($$self{'_country'} eq 'EU') { } |
| 50 | T | F | elsif ($$self{'_country'} eq 'US' and defined $$whois{'StateProv'} and $$whois{'StateProv'} eq 'PR') { } |
1067 | 50 | T | F | if ($$self{'_country'}) { } |
1079 | 0 | T | F | unless ($@) |
1085 | 50 | T | F | if ($$self{"_country"}) |
1088 | 50 | T | F | if ($$self{"_country"} =~ /^(..)\s*#/) |
1096 | 50 | T | F | if ($$self{"_country"}) |
1097 | 50 | T | F | if (not $$self{'_country'} =~ /\D/) { } |
1102 | 50 | T | F | if ($$self{'_country'} eq 'hk') { } |
| 50 | T | F | elsif ($$self{'_country'} eq 'eu') { } |
1111 | 0 | T | F | if (subnet_matcher('185.10.104.0/22')->($ip)) { } |
1122 | 50 | T | F | if (not $$self{'_country'} =~ /\D/) { } |
| 50 | T | F | elsif ($$self{'_cache'}) { } |
1141 | 50 | T | F | if ($^O eq 'MSWin32' and -r 'c:/GeoIP/GeoIP.dat' or (-r '/usr/local/share/GeoIP/GeoIP.dat' or -r '/usr/share/GeoIP/GeoIP.dat')) { } |
1146 | 0 | T | F | if ($@) { } |
1151 | 0 | T | F | if (-r '/usr/share/GeoIP/GeoIP.dat') { } |
1183 | 50 | T | F | if ($$self{"_locale"}) |
1191 | 50 | T | F | if (defined $agent and $agent =~ /\((.+)\)/) |
1197 | 50 | T | F | if ($candidate =~ /^[a-zA-Z]{2}-([a-zA-Z]{2})$/) |
1199 | 0 | T | F | if (my $c = $self->_code2country($1)) |
1207 | 50 | T | F | if (eval {
do {
require HTTP::BrowserDetect
}
}) |
1211 | 100 | T | F | if ($browser and $browser->country and my $c = $self->_code2country($browser->country)) |
1221 | 50 | T | F | if ($country) |
1229 | 50 | T | F | unless ($@) |
1230 | 50 | T | F | if ($c) |
1238 | 0 | T | F | if (defined $ENV{"GEOIP_COUNTRY_CODE"}) |
1241 | 0 | T | F | if ($c) |
1263 | 50 | T | F | if ($$self{"_timezone"}) |
1268 | 50 | T | F | if (my $ip = $ENV{'REMOTE_ADDR'}) { } |
1269 | 50 | T | F | if ($$self{"_have_geoip"} == -1) |
1272 | 50 | T | F | if ($$self{"_have_geoip"} == 1) |
1277 | 50 | T | F | unless ($$self{"_timezone"}) |
1278 | 50 | T | F | if (eval {
do {
require LWP::Simple::WithCache;
require JSON::Parse
}
}) { } |
| 50 | T | F | elsif (eval {
do {
require LWP::Simple;
require JSON::Parse
}
}) { } |
1284 | 0 | T | F | if (my $data = LWP::Simple::WithCache::get("http://ip-api.com/json/$ip")) |
1293 | 50 | T | F | if (my $data = LWP::Simple::get("http://ip-api.com/json/$ip")) |
1297 | 0 | T | F | if (my $logger = $$self{"logger"}) |
1305 | 0 | T | F | if (open my $fin, '<', '/etc/timezone') { } |
1314 | 50 | T | F | unless (defined $$self{"_timezone"}) |
1325 | 50 | T | F | unless $code |
1326 | 100 | T | F | if (defined $$self{'_country'}) { } |
1331 | 100 | T | F | unless ($$self{"_cache"}) |
1334 | 100 | T | F | if (my $from_cache = $$self{"_cache"}->get('CGI::Lingua' . ":code2language:$code")) |
1347 | 50 | T | F | unless $code |
1348 | 100 | T | F | if ($$self{'_country'}) { } |
1354 | 50 | T | F | if (not $_[0] =~ /No result found in country table/) |
1369 | 50 | T | F | unless $code |
1371 | 100 | T | F | unless ($$self{"_cache"}) |
1373 | 50 | T | F | if (defined $country) |
1378 | 100 | T | F | if (my $from_cache = $$self{"_cache"}->get('CGI::Lingua' . ":code2countryname:$code")) |
1382 | 50 | T | F | if (my $country = $self->_code2country($code)) |
1395 | 50 | T | F | if (scalar @messages) |
1401 | 50 | T | F | if (my $logger = $$self{"logger"}) |
1431 | 50 | T | F | if (defined $$self{'logger'}) { } |