| line | % | coverage | branch |
| 168 | 50 | T | F | if (not defined $class) { } |
| 50 | T | F | elsif (ref $class) { } |
| 169 | 0 | T | F | if ($params) |
| 171 | 0 | T | F | if (my $logger = $$params{"logger"}) |
| 181 | 0 | T | F | if defined $$params{"supported"} |
| 188 | 50 | T | F | if (defined $$params{"logger"}) |
| 189 | 50 | T | F | unless (&Scalar::Util::blessed($$params{"logger"}) and $$params{"logger"}->can("warn") and $$params{"logger"}->can("info") and $$params{"logger"}->can("error")) |
| 199 | 100 | T | F | unless ($$params{"supported"}) |
| 200 | 50 | T | F | if (my $logger = $$params{"logger"}) |
| 209 | 100 | T | F | if ($cache and $ENV{"REMOTE_ADDR"}) |
| 212 | 50 | T | F | if ($info and $l = $info->lang) { } |
| 50 | T | F | elsif ($l = $class->_what_language) { } |
| 217 | 50 | T | F | if (ref($$params{'supported'} eq 'ARRAY')) { } |
| 225 | 50 | T | F | if (my $rc = $cache->get($key)) |
| 240 | 0 | T | F | if ($$rc{'_what_language'} || $$rc{'_rlanguage'} and $info and $info->lang) |
| 266 | 100 | T | F | ref $$params{'supported'} ? : |
| 272 | 50 | T | F | if (defined $^V and $^V ge "v5.14.0") |
| 273 | 50 | T | F | if ${^GLOBAL_PHASE} eq "DESTRUCT" |
| 275 | 100 | T | F | unless ($ENV{"REMOTE_ADDR"}) |
| 279 | 50 | T | F | unless ref $self |
| 282 | 100 | T | F | unless $cache |
| 285 | 50 | T | F | if (my $l = $self->_what_language) |
| 289 | 50 | T | F | if $cache->get($key) |
| 344 | 100 | T | F | unless ($$self{"_slanguage"}) |
| 389 | 100 | T | F | unless ($$self{"_slanguage"}) |
| 410 | 100 | T | F | unless ($$self{"_slanguage"}) |
| 439 | 50 | T | F | unless ($$self{"_slanguage"}) |
| 459 | 100 | T | F | unless ($$self{"_rlanguage"}) |
| 482 | 50 | T | F | if (defined $http_accept_language) |
| 485 | 50 | T | F | if ($http_accept_language eq "en-uk") |
| 491 | 0 | T | F | if (not $_[0] =~ /^Use of uninitialized value/) |
| 498 | 100 | T | F | if ($l and $http_accept_language =~ /-/ and not $http_accept_language =~ qr/$l/i) |
| 507 | 100 | T | F | unless ($l) |
| 518 | 100 | T | F | if ($i18n->accepts($1, $$self{"_supported"})) |
| 525 | 100 | T | F | unless ($l) |
| 529 | 100 | T | F | if $possible =~ /..\-../ |
| 532 | 100 | T | F | if ($i18n->accepts($possible, $$self{"_supported"})) |
| 541 | 100 | T | F | if ($l) { } |
| 100 | T | F | elsif ($http_accept_language =~ /;/) { } |
| 544 | 100 | T | F | if (not $l =~ /^..-..$/) { } |
| 50 | T | F | elsif ($l =~ /(.+)-(..)$/) { } |
| 546 | 50 | T | F | if ($$self{"_slanguage"}) |
| 557 | 100 | T | F | if ($http_accept_language =~ /..-(..)$/) { } |
| 50 | T | F | elsif ($http_accept_language =~ /..-([a-z]{2,3})$/i) { } |
| 560 | 100 | T | F | unless defined $requested_sublanguage |
| 565 | 0 | T | F | if ($@) |
| 569 | 100 | T | F | if ($sl) { } |
| 100 | T | F | elsif ($requested_sublanguage) { } |
| 575 | 50 | T | F | if (my $c = $self->_code2countryname($requested_sublanguage)) { } |
| 589 | 50 | T | F | if ($accepts) |
| 592 | 50 | T | F | if ($accepts =~ /\-/) { } |
| 596 | 0 | T | F | if ($$self{"_cache"}) |
| 599 | 0 | T | F | if ($from_cache) { } |
| 605 | 0 | T | F | if ($$self{"_slanguage"}) |
| 606 | 0 | T | F | if ($variety eq "uk") |
| 613 | 0 | T | F | if (defined(my $c = $self->_code2countryname($variety))) |
| 618 | 0 | T | F | if ($$self{"_sublanguage"}) |
| 623 | 0 | T | F | unless ($from_cache) |
| 634 | 50 | T | F | if ($accepts) |
| 640 | 50 | T | F | if ($variety =~ /[a-z]{2,3}/ and not defined $$self{"_sublanguage"}) |
| 644 | 50 | T | F | if ($variety eq "uk") |
| 653 | 100 | T | F | if ($$self{"_cache"}) |
| 656 | 100 | T | F | if (defined $from_cache) { } |
| 670 | 50 | T | F | if (defined $results[0]) { } |
| 678 | 50 | T | F | if ($@ or not defined $language_name) { } |
| 679 | 0 | T | F | if $@ |
| 688 | 100 | T | F | if ($$self{"_cache"} and not defined $from_cache) |
| 694 | 50 | T | F | if (defined $$self{"_sublanguage"}) |
| 706 | 50 | T | F | if ($$self{"_slanguage"} and $$self{"_slanguage"} ne "Unknown") |
| 707 | 0 | T | F | if ($$self{"_rlanguage"} eq "Unknown") |
| 710 | 0 | T | F | if ($$self{"_rlanguage"}) |
| 711 | 0 | T | F | if ($l = $self->_code2language($$self{"_rlanguage"})) |
| 722 | 100 | T | F | if (!$$self{'_rlanguage'} || $$self{'_rlanguage'} eq 'Unknown' and length $http_accept_language == 2 || $http_accept_language =~ /^..-..$/) |
| 726 | 50 | T | F | unless ($$self{"_rlanguage"}) |
| 733 | 50 | T | F | if ($$self{"_dont_use_ip"}) |
| 742 | 100 | T | F | if (not defined $country and my $c = $self->_what_language) |
| 743 | 50 | T | F | if ($c =~ /^(..)_(..)/) { } |
| 100 | T | F | elsif ($c =~ /^(..)$/) { } |
| 750 | 100 | T | F | if (defined $country) |
| 755 | 50 | T | F | if ($$self{"_cache"}) |
| 760 | 50 | T | F | if ($from_cache) { } |
| 765 | 50 | T | F | if ($l) |
| 767 | 0 | T | F | if (defined $l) |
| 770 | 0 | T | F | if ($language_name) |
| 777 | 50 | T | F | if ($language_name) |
| 778 | 0 | T | F | if (not defined $$self{"_rlanguage"} or $$self{"_rlanguage"} eq "Unknown") |
| 781 | 0 | T | F | unless (exists $self->{'_slanguage'} and $$self{"_slanguage"} ne "Unknown") |
| 786 | 0 | T | F | if ($language_name and $language_code2 and not defined $http_accept_language) { } |
| 794 | 0 | T | F | unless ($code) |
| 795 | 0 | T | F | if ($http_accept_language and $http_accept_language ne $$self{"_rlanguage"}) |
| 800 | 0 | T | F | unless ($code) |
| 803 | 0 | T | F | if ($$self{"_rlanguage"} =~ /(.+)\s\(.+/) |
| 804 | 0 | T | F | if (not defined $http_accept_language or $1 ne $$self{"_rlanguage"}) |
| 810 | 0 | T | F | unless ($code) |
| 818 | 0 | T | F | if ($code) |
| 820 | 0 | T | F | if ($$self{'_slanguage'}) { } |
| 829 | 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'}) { } |
| 867 | 100 | T | F | /^(.+)-/ ? : |
| 869 | 50 | T | F | if (exists $base_languages{$language_string}) |
| 879 | 100 | T | F | if (ref $self) |
| 881 | 100 | T | F | if ($$self{"_what_language"}) |
| 885 | 50 | T | F | if (my $info = $$self{"_info"}) |
| 886 | 0 | T | F | if (my $rc = $info->lang) |
| 894 | 100 | T | F | if (my $rc = $ENV{"HTTP_ACCEPT_LANGUAGE"}) |
| 895 | 100 | T | F | if (ref $self) |
| 901 | 50 | T | F | if (defined $ENV{"LANG"}) |
| 904 | 0 | T | F | if (ref $self) |
| 930 | 50 | T | F | if ($$self{"_country"}) |
| 936 | 50 | T | F | if (defined $ENV{"GEOIP_COUNTRY_CODE"}) |
| 940 | 100 | T | F | if ($ENV{"HTTP_CF_IPCOUNTRY"} and $ENV{"HTTP_CF_IPCOUNTRY"} ne "XX") |
| 948 | 100 | T | F | unless defined $ip |
| 953 | 50 | T | F | unless (is_ipv4($ip)) |
| 955 | 0 | T | F | if ($ip eq '::1') { } |
| 0 | T | F | elsif (not is_ipv6($ip)) { } |
| 965 | 50 | T | F | if (is_private_ip($ip)) |
| 969 | 50 | T | F | if (is_loopback_ip($ip)) |
| 974 | 50 | T | F | if ($$self{"_cache"}) |
| 976 | 0 | T | F | if (defined $$self{"_country"}) |
| 977 | 0 | T | F | if (not $$self{'_country'} =~ /\D/) { } |
| 989 | 50 | T | F | if ($$self{"_have_ipcountry"} == -1) |
| 990 | 50 | T | F | if (eval {
do {
require IP::Country
}
}) { } |
| 1000 | 50 | T | F | if ($$self{"_have_ipcountry"}) |
| 1002 | 0 | T | F | if ($$self{'_country'}) { } |
| 0 | T | F | elsif (is_ipv4($ip)) { } |
| 1009 | 50 | T | F | unless (defined $$self{"_country"}) |
| 1010 | 50 | T | F | if ($$self{"_have_geoip"} == -1) |
| 1013 | 50 | T | F | if ($$self{"_have_geoip"} == 1) |
| 1019 | 50 | T | F | if (not defined $$self{"_country"} and $ip ne "45.128.139.41") |
| 1020 | 0 | T | F | if ($$self{"_have_geoipfree"} == -1) |
| 1024 | 0 | T | F | if ($@) { } |
| 1032 | 0 | T | F | if ($$self{"_have_geoipfree"} == 1) |
| 1033 | 0 | T | F | if (my $country = ($$self{"_geoipfree"}->LookUp($ip))[0]) |
| 1039 | 50 | T | F | if ($$self{"_country"} and $$self{"_country"} eq "eu") |
| 1042 | 50 | T | F | if (not $$self{"_country"} and eval {
do {
require LWP::Simple::WithCache;
require JSON::Parse
}
}) |
| 1049 | 0 | T | F | if (my $data = LWP::Simple::WithCache::get("http://www.geoplugin.net/json.gp?ip=$ip")) |
| 1053 | 50 | T | F | unless ($$self{"_country"}) |
| 1068 | 50 | T | F | unless ($@ or not defined $whois or ref $whois ne "HASH") |
| 1069 | 50 | T | F | if (defined $$whois{'Country'}) { } |
| 50 | T | F | elsif (defined $$whois{'country'}) { } |
| 1074 | 50 | T | F | if ($$self{"_country"}) |
| 1075 | 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') { } |
| 1084 | 50 | T | F | if ($$self{'_country'}) { } |
| 1096 | 0 | T | F | unless ($@) |
| 1102 | 50 | T | F | if ($$self{"_country"}) |
| 1105 | 50 | T | F | if ($$self{"_country"} =~ /^(..)\s*#/) |
| 1113 | 50 | T | F | if ($$self{"_country"}) |
| 1114 | 50 | T | F | if (not $$self{'_country'} =~ /\D/) { } |
| 1119 | 50 | T | F | if ($$self{'_country'} eq 'hk') { } |
| 50 | T | F | elsif ($$self{'_country'} eq 'eu') { } |
| 1128 | 0 | T | F | if (subnet_matcher('185.10.104.0/22')->($ip)) { } |
| 1139 | 50 | T | F | if (not $$self{'_country'} =~ /\D/) { } |
| 50 | T | F | elsif ($$self{'_cache'}) { } |
| 1158 | 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')) { } |
| 1163 | 0 | T | F | if ($@) { } |
| 1168 | 0 | T | F | if (-r '/usr/share/GeoIP/GeoIP.dat') { } |
| 1200 | 50 | T | F | if ($$self{"_locale"}) |
| 1208 | 50 | T | F | if (defined $agent and $agent =~ /\((.+)\)/) |
| 1214 | 50 | T | F | if ($candidate =~ /^[a-zA-Z]{2}-([a-zA-Z]{2})$/) |
| 1216 | 0 | T | F | if (my $c = $self->_code2country($1)) |
| 1224 | 50 | T | F | if (eval {
do {
require HTTP::BrowserDetect
}
}) |
| 1228 | 50 | T | F | if ($browser and $browser->country and my $c = $self->_code2country($browser->country)) |
| 1238 | 0 | T | F | if ($country) |
| 1246 | 0 | T | F | unless ($@) |
| 1247 | 0 | T | F | if ($c) |
| 1255 | 0 | T | F | if (defined $ENV{"GEOIP_COUNTRY_CODE"}) |
| 1258 | 0 | T | F | if ($c) |
| 1280 | 0 | T | F | if ($$self{"_timezone"}) |
| 1285 | 0 | T | F | if (my $ip = $ENV{'REMOTE_ADDR'}) { } |
| 1286 | 0 | T | F | if ($$self{"_have_geoip"} == -1) |
| 1289 | 0 | T | F | if ($$self{"_have_geoip"} == 1) |
| 1294 | 0 | T | F | unless ($$self{"_timezone"}) |
| 1295 | 0 | T | F | if (eval {
do {
require LWP::Simple::WithCache;
require JSON::Parse
}
}) { } |
| 0 | T | F | elsif (eval {
do {
require LWP::Simple;
require JSON::Parse
}
}) { } |
| 1301 | 0 | T | F | if (my $data = LWP::Simple::WithCache::get("http://ip-api.com/json/$ip")) |
| 1310 | 0 | T | F | if (my $data = LWP::Simple::get("http://ip-api.com/json/$ip")) |
| 1314 | 0 | T | F | if (my $logger = $$self{"logger"}) |
| 1322 | 0 | T | F | if (open my $fin, '<', '/etc/timezone') { } |
| 1331 | 0 | T | F | unless (defined $$self{"_timezone"}) |
| 1342 | 50 | T | F | unless $code |
| 1343 | 100 | T | F | if (defined $$self{'_country'}) { } |
| 1348 | 100 | T | F | unless ($$self{"_cache"}) |
| 1351 | 100 | T | F | if (my $from_cache = $$self{"_cache"}->get('CGI::Lingua' . ":code2language:$code")) |
| 1364 | 50 | T | F | unless $code |
| 1365 | 100 | T | F | if ($$self{'_country'}) { } |
| 1371 | 50 | T | F | if (not $_[0] =~ /No result found in country table/) |
| 1386 | 50 | T | F | unless $code |
| 1388 | 100 | T | F | unless ($$self{"_cache"}) |
| 1390 | 50 | T | F | if (defined $country) |
| 1395 | 100 | T | F | if (my $from_cache = $$self{"_cache"}->get('CGI::Lingua' . ":code2countryname:$code")) |
| 1399 | 50 | T | F | if (my $country = $self->_code2country($code)) |
| 1412 | 50 | T | F | if (ref $self and scalar @messages) |
| 1418 | 50 | T | F | if (my $logger = $$self{"logger"}) |
| 1448 | 0 | T | F | if (defined $$self{'logger'}) { } |