| 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 (defined $params->{'supported'}) |
| 200 | 50 | T | F | if (my $logger = $params->{'logger'}) |
| 206 | 100 | T | F | if (ref $params->{'supported'}) { } |
| 50 | T | F | elsif (length $params->{'supported'} < 2 or length $params->{'supported'} > 5) { } |
| 207 | 50 | T | F | if (ref $params->{'supported'} ne "ARRAY") |
| 217 | 50 | T | F | if ($cache and $ENV{'REMOTE_ADDR'}) |
| 220 | 50 | T | F | if ($info and $l = $info->lang) { } |
| 50 | T | F | elsif ($l = $class->_what_language) { } |
| 225 | 50 | T | F | if (ref($params->{'supported'} eq 'ARRAY')) { } |
| 233 | 50 | T | F | if (my $rc = $cache->get($key)) |
| 247 | 0 | T | F | if ($rc->{'_what_language'} || $rc->{'_rlanguage'} and $info and $info->lang) |
| 273 | 100 | T | F | ref $params->{'supported'} ? : |
| 279 | 50 | T | F | if (defined $^V and $^V ge "v5.14.0") |
| 280 | 50 | T | F | if ${^GLOBAL_PHASE} eq "DESTRUCT" |
| 282 | 100 | T | F | unless ($ENV{'REMOTE_ADDR'}) |
| 286 | 50 | T | F | unless ref $self |
| 289 | 100 | T | F | unless $cache |
| 292 | 50 | T | F | if (my $l = $self->_what_language) |
| 296 | 50 | T | F | if $cache->get($key) |
| 351 | 100 | T | F | unless ($self->{'_slanguage'}) |
| 396 | 100 | T | F | unless ($self->{'_slanguage'}) |
| 417 | 100 | T | F | unless ($self->{'_slanguage'}) |
| 446 | 100 | T | F | unless ($self->{'_slanguage'}) |
| 466 | 100 | T | F | unless ($self->{'_rlanguage'}) |
| 489 | 50 | T | F | if (defined $http_accept_language) |
| 492 | 50 | T | F | if ($http_accept_language eq "en-uk") |
| 498 | 0 | T | F | if (not $_[0] =~ /^Use of uninitialized value/) |
| 505 | 100 | T | F | if ($l and $http_accept_language =~ /-/ and not $http_accept_language =~ qr/$l/i) |
| 514 | 100 | T | F | unless ($l) |
| 525 | 100 | T | F | if ($i18n->accepts($1, $self->{'_supported'})) |
| 532 | 100 | T | F | unless ($l) |
| 536 | 100 | T | F | if $possible =~ /..\-../ |
| 539 | 100 | T | F | if ($i18n->accepts($possible, $self->{'_supported'})) |
| 548 | 100 | T | F | if ($l) { } |
| 100 | T | F | elsif ($http_accept_language =~ /;/) { } |
| 551 | 100 | T | F | if (not $l =~ /^..-..$/) { } |
| 50 | T | F | elsif ($l =~ /(.+)-(..)$/) { } |
| 553 | 50 | T | F | if ($self->{'_slanguage'}) |
| 564 | 100 | T | F | if ($http_accept_language =~ /..-(..)$/) { } |
| 50 | T | F | elsif ($http_accept_language =~ /..-([a-z]{2,3})$/i) { } |
| 567 | 100 | T | F | unless defined $requested_sublanguage |
| 572 | 0 | T | F | if ($@) |
| 576 | 100 | T | F | if ($sl) { } |
| 100 | T | F | elsif ($requested_sublanguage) { } |
| 582 | 50 | T | F | if (my $c = $self->_code2countryname($requested_sublanguage)) { } |
| 596 | 50 | T | F | if ($accepts) |
| 599 | 50 | T | F | if ($accepts =~ /\-/) { } |
| 603 | 0 | T | F | if ($self->{'_cache'}) |
| 606 | 0 | T | F | if ($from_cache) { } |
| 612 | 0 | T | F | if ($self->{'_slanguage'}) |
| 613 | 0 | T | F | if ($variety eq "uk") |
| 620 | 0 | T | F | if (defined(my $c = $self->_code2countryname($variety))) |
| 625 | 0 | T | F | if ($self->{'_sublanguage'}) |
| 630 | 0 | T | F | unless ($from_cache) |
| 641 | 50 | T | F | if ($accepts) |
| 647 | 50 | T | F | if ($variety =~ /[a-z]{2,3}/ and not defined $self->{'_sublanguage'}) |
| 651 | 50 | T | F | if ($variety eq "uk") |
| 660 | 100 | T | F | if ($self->{'_cache'}) |
| 663 | 100 | T | F | if (defined $from_cache) { } |
| 677 | 50 | T | F | if (defined $results[0]) { } |
| 685 | 50 | T | F | if ($@ or not defined $language_name) { } |
| 686 | 0 | T | F | if $@ |
| 695 | 100 | T | F | if ($self->{'_cache'} and not defined $from_cache) |
| 701 | 50 | T | F | if (defined $self->{'_sublanguage'}) |
| 713 | 50 | T | F | if ($self->{'_slanguage'} and $self->{'_slanguage'} ne "Unknown") |
| 714 | 0 | T | F | if ($self->{'_rlanguage'} eq "Unknown") |
| 717 | 0 | T | F | if ($self->{'_rlanguage'}) |
| 718 | 0 | T | F | if ($l = $self->_code2language($self->{'_rlanguage'})) |
| 729 | 100 | T | F | if (!$self->{'_rlanguage'} || $self->{'_rlanguage'} eq 'Unknown' and length $http_accept_language == 2 || $http_accept_language =~ /^..-..$/) |
| 733 | 50 | T | F | unless ($self->{'_rlanguage'}) |
| 740 | 50 | T | F | if ($self->{'_dont_use_ip'}) |
| 749 | 100 | T | F | if (not defined $country and my $c = $self->_what_language) |
| 750 | 50 | T | F | if ($c =~ /^(..)_(..)/) { } |
| 100 | T | F | elsif ($c =~ /^(..)$/) { } |
| 757 | 100 | T | F | if (defined $country) |
| 762 | 50 | T | F | if ($self->{'_cache'}) |
| 767 | 50 | T | F | if ($from_cache) { } |
| 772 | 50 | T | F | if ($l) |
| 774 | 0 | T | F | if (defined $l) |
| 777 | 0 | T | F | if ($language_name) |
| 784 | 50 | T | F | if ($language_name) |
| 785 | 0 | T | F | if (not defined $self->{'_rlanguage'} or $self->{'_rlanguage'} eq "Unknown") |
| 788 | 0 | T | F | unless (exists $self->{'_slanguage'} and $self->{'_slanguage'} ne "Unknown") |
| 793 | 0 | T | F | if ($language_name and $language_code2 and not defined $http_accept_language) { } |
| 801 | 0 | T | F | unless ($code) |
| 802 | 0 | T | F | if ($http_accept_language and $http_accept_language ne $self->{'_rlanguage'}) |
| 807 | 0 | T | F | unless ($code) |
| 810 | 0 | T | F | if ($self->{'_rlanguage'} =~ /(.+)\s\(.+/) |
| 811 | 0 | T | F | if (not defined $http_accept_language or $1 ne $self->{'_rlanguage'}) |
| 817 | 0 | T | F | unless ($code) |
| 825 | 0 | T | F | if ($code) |
| 827 | 0 | T | F | if ($self->{'_slanguage'}) { } |
| 836 | 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'}) { } |
| 874 | 100 | T | F | if (/^(.+)-/) { } |
| 876 | 50 | T | F | if (exists $base_languages{$language_string}) |
| 886 | 100 | T | F | if (ref $self) |
| 888 | 100 | T | F | if ($self->{'_what_language'}) |
| 892 | 50 | T | F | if (my $info = $self->{'_info'}) |
| 893 | 0 | T | F | if (my $rc = $info->lang) |
| 901 | 100 | T | F | if (my $rc = $ENV{'HTTP_ACCEPT_LANGUAGE'}) |
| 902 | 100 | T | F | if (ref $self) |
| 908 | 50 | T | F | if (defined $ENV{'LANG'}) |
| 911 | 0 | T | F | if (ref $self) |
| 937 | 50 | T | F | if ($self->{'_country'}) |
| 943 | 50 | T | F | if (defined $ENV{'GEOIP_COUNTRY_CODE'}) |
| 947 | 100 | T | F | if ($ENV{'HTTP_CF_IPCOUNTRY'} and $ENV{'HTTP_CF_IPCOUNTRY'} ne "XX") |
| 955 | 100 | T | F | unless defined $ip |
| 960 | 50 | T | F | unless (is_ipv4($ip)) |
| 962 | 0 | T | F | if ($ip eq '::1') { } |
| 0 | T | F | elsif (not is_ipv6($ip)) { } |
| 972 | 50 | T | F | if (is_private_ip($ip)) |
| 976 | 50 | T | F | if (is_loopback_ip($ip)) |
| 981 | 50 | T | F | if ($self->{'_cache'}) |
| 983 | 0 | T | F | if (defined $self->{'_country'}) |
| 984 | 0 | T | F | if (not $self->{'_country'} =~ /\D/) { } |
| 996 | 50 | T | F | if ($self->{'_have_ipcountry'} == -1) |
| 997 | 50 | T | F | if (eval {
do {
require IP::Country
}
}) { } |
| 1007 | 50 | T | F | if ($self->{'_have_ipcountry'}) |
| 1009 | 0 | T | F | if ($self->{'_country'}) { } |
| 0 | T | F | elsif (is_ipv4($ip)) { } |
| 1016 | 50 | T | F | unless (defined $self->{'_country'}) |
| 1017 | 50 | T | F | if ($self->{'_have_geoip'} == -1) |
| 1020 | 50 | T | F | if ($self->{'_have_geoip'} == 1) |
| 1026 | 50 | T | F | if (not defined $self->{'_country'} and $ip ne "45.128.139.41") |
| 1027 | 0 | T | F | if ($self->{'_have_geoipfree'} == -1) |
| 1031 | 0 | T | F | if ($@) { } |
| 1039 | 0 | T | F | if ($self->{'_have_geoipfree'} == 1) |
| 1040 | 0 | T | F | if (my $country = ($self->{'_geoipfree'}->LookUp($ip))[0]) |
| 1046 | 50 | T | F | if ($self->{'_country'} and $self->{'_country'} eq "eu") |
| 1049 | 50 | T | F | if (not $self->{'_country'} and eval {
do {
require LWP::Simple::WithCache;
require JSON::Parse
}
}) |
| 1056 | 0 | T | F | if (my $data = LWP::Simple::WithCache::get("http://www.geoplugin.net/json.gp?ip=$ip")) |
| 1060 | 50 | T | F | unless ($self->{'_country'}) |
| 1075 | 50 | T | F | unless ($@ or not defined $whois or ref $whois ne "HASH") |
| 1076 | 50 | T | F | if (defined $whois->{'Country'}) { } |
| 50 | T | F | elsif (defined $whois->{'country'}) { } |
| 1081 | 50 | T | F | if ($self->{'_country'}) |
| 1082 | 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') { } |
| 1091 | 50 | T | F | if ($self->{'_country'}) { } |
| 1103 | 0 | T | F | unless ($@) |
| 1109 | 50 | T | F | if ($self->{'_country'}) |
| 1112 | 50 | T | F | if ($self->{'_country'} =~ /^(..)\s*#/) |
| 1120 | 50 | T | F | if ($self->{'_country'}) |
| 1121 | 50 | T | F | if (not $self->{'_country'} =~ /\D/) { } |
| 1126 | 50 | T | F | if ($self->{'_country'} eq 'hk') { } |
| 50 | T | F | elsif ($self->{'_country'} eq 'eu') { } |
| 1135 | 0 | T | F | if (subnet_matcher('185.10.104.0/22')->($ip)) { } |
| 1146 | 50 | T | F | if (not $self->{'_country'} =~ /\D/) { } |
| 50 | T | F | elsif ($self->{'_cache'}) { } |
| 1165 | 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')) { } |
| 1170 | 0 | T | F | if ($@) { } |
| 1175 | 0 | T | F | if (-r '/usr/share/GeoIP/GeoIP.dat') { } |
| 1207 | 50 | T | F | if ($self->{'_locale'}) |
| 1215 | 50 | T | F | if (defined $agent and $agent =~ /\((.+)\)/) |
| 1221 | 50 | T | F | if ($candidate =~ /^[a-zA-Z]{2}-([a-zA-Z]{2})$/) |
| 1223 | 0 | T | F | if (my $c = $self->_code2country($1)) |
| 1231 | 50 | T | F | if (eval {
do {
require HTTP::BrowserDetect
}
}) |
| 1235 | 50 | T | F | if ($browser and $browser->country and my $c = $self->_code2country($browser->country)) |
| 1245 | 0 | T | F | if ($country) |
| 1253 | 0 | T | F | unless ($@) |
| 1254 | 0 | T | F | if ($c) |
| 1262 | 0 | T | F | if (defined $ENV{'GEOIP_COUNTRY_CODE'}) |
| 1265 | 0 | T | F | if ($c) |
| 1287 | 0 | T | F | if ($self->{'_timezone'}) |
| 1292 | 0 | T | F | if (my $ip = $ENV{'REMOTE_ADDR'}) { } |
| 1293 | 0 | T | F | if ($self->{'_have_geoip'} == -1) |
| 1296 | 0 | T | F | if ($self->{'_have_geoip'} == 1) |
| 1301 | 0 | T | F | unless ($self->{'_timezone'}) |
| 1302 | 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
}
}) { } |
| 1308 | 0 | T | F | if (my $data = LWP::Simple::WithCache::get("http://ip-api.com/json/$ip")) |
| 1317 | 0 | T | F | if (my $data = LWP::Simple::get("http://ip-api.com/json/$ip")) |
| 1321 | 0 | T | F | if (my $logger = $self->{'logger'}) |
| 1329 | 0 | T | F | if (open my $fin, '<', '/etc/timezone') { } |
| 1338 | 0 | T | F | unless (defined $self->{'_timezone'}) |
| 1349 | 50 | T | F | unless $code |
| 1350 | 100 | T | F | if (defined $self->{'_country'}) { } |
| 1355 | 100 | T | F | unless ($self->{'_cache'}) |
| 1358 | 100 | T | F | if (my $from_cache = $self->{'_cache'}->get('CGI::Lingua' . ":code2language:$code")) |
| 1371 | 50 | T | F | unless $code |
| 1372 | 100 | T | F | if ($self->{'_country'}) { } |
| 1378 | 50 | T | F | if (not $_[0] =~ /No result found in country table/) |
| 1393 | 50 | T | F | unless $code |
| 1395 | 100 | T | F | unless ($self->{'_cache'}) |
| 1397 | 50 | T | F | if (defined $country) |
| 1402 | 100 | T | F | if (my $from_cache = $self->{'_cache'}->get('CGI::Lingua' . ":code2countryname:$code")) |
| 1406 | 50 | T | F | if (my $country = $self->_code2country($code)) |
| 1419 | 50 | T | F | if (ref $self and scalar @messages) |
| 1425 | 50 | T | F | if (my $logger = $self->{'logger'}) |
| 1455 | 0 | T | F | if (defined $self->{'logger'}) { } |