| 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 | 50 | 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)) |
| 239 | 0 | T | F | if ($rc->{'_what_language'} || $rc->{'_rlanguage'} and $info and $info->lang) |
| 265 | 100 | T | F | ref $params->{'supported'} ? : |
| 271 | 50 | T | F | if (defined $^V and $^V ge "v5.14.0") |
| 272 | 50 | T | F | if ${^GLOBAL_PHASE} eq "DESTRUCT" |
| 274 | 100 | T | F | unless ($ENV{'REMOTE_ADDR'}) |
| 278 | 50 | T | F | unless ref $self |
| 281 | 100 | T | F | unless $cache |
| 284 | 50 | T | F | if (my $l = $self->_what_language) |
| 288 | 50 | T | F | if $cache->get($key) |
| 343 | 100 | T | F | unless ($self->{'_slanguage'}) |
| 388 | 100 | T | F | unless ($self->{'_slanguage'}) |
| 409 | 100 | T | F | unless ($self->{'_slanguage'}) |
| 438 | 100 | T | F | unless ($self->{'_slanguage'}) |
| 458 | 100 | T | F | unless ($self->{'_rlanguage'}) |
| 481 | 50 | T | F | if (defined $http_accept_language) |
| 484 | 50 | T | F | if ($http_accept_language eq "en-uk") |
| 490 | 0 | T | F | if (not $_[0] =~ /^Use of uninitialized value/) |
| 497 | 100 | T | F | if ($l and $http_accept_language =~ /-/ and not $http_accept_language =~ qr/$l/i) |
| 506 | 100 | T | F | unless ($l) |
| 517 | 100 | T | F | if ($i18n->accepts($1, $self->{'_supported'})) |
| 524 | 100 | T | F | unless ($l) |
| 528 | 100 | T | F | if $possible =~ /..\-../ |
| 531 | 100 | T | F | if ($i18n->accepts($possible, $self->{'_supported'})) |
| 540 | 100 | T | F | if ($l) { } |
| 100 | T | F | elsif ($http_accept_language =~ /;/) { } |
| 543 | 100 | T | F | if (not $l =~ /^..-..$/) { } |
| 50 | T | F | elsif ($l =~ /(.+)-(..)$/) { } |
| 545 | 50 | T | F | if ($self->{'_slanguage'}) |
| 556 | 100 | T | F | if ($http_accept_language =~ /..-(..)$/) { } |
| 50 | T | F | elsif ($http_accept_language =~ /..-([a-z]{2,3})$/i) { } |
| 559 | 100 | T | F | unless defined $requested_sublanguage |
| 564 | 0 | T | F | if ($@) |
| 568 | 100 | T | F | if ($sl) { } |
| 100 | T | F | elsif ($requested_sublanguage) { } |
| 574 | 50 | T | F | if (my $c = $self->_code2countryname($requested_sublanguage)) { } |
| 588 | 50 | T | F | if ($accepts) |
| 591 | 50 | T | F | if ($accepts =~ /\-/) { } |
| 595 | 0 | T | F | if ($self->{'_cache'}) |
| 598 | 0 | T | F | if ($from_cache) { } |
| 604 | 0 | T | F | if ($self->{'_slanguage'}) |
| 605 | 0 | T | F | if ($variety eq "uk") |
| 612 | 0 | T | F | if (defined(my $c = $self->_code2countryname($variety))) |
| 617 | 0 | T | F | if ($self->{'_sublanguage'}) |
| 622 | 0 | T | F | unless ($from_cache) |
| 633 | 50 | T | F | if ($accepts) |
| 639 | 50 | T | F | if ($variety =~ /[a-z]{2,3}/ and not defined $self->{'_sublanguage'}) |
| 643 | 50 | T | F | if ($variety eq "uk") |
| 652 | 100 | T | F | if ($self->{'_cache'}) |
| 655 | 100 | T | F | if (defined $from_cache) { } |
| 669 | 50 | T | F | if (defined $results[0]) { } |
| 677 | 50 | T | F | if ($@ or not defined $language_name) { } |
| 678 | 0 | T | F | if $@ |
| 687 | 100 | T | F | if ($self->{'_cache'} and not defined $from_cache) |
| 693 | 50 | T | F | if (defined $self->{'_sublanguage'}) |
| 705 | 50 | T | F | if ($self->{'_slanguage'} and $self->{'_slanguage'} ne "Unknown") |
| 706 | 0 | T | F | if ($self->{'_rlanguage'} eq "Unknown") |
| 709 | 0 | T | F | if ($self->{'_rlanguage'}) |
| 710 | 0 | T | F | if ($l = $self->_code2language($self->{'_rlanguage'})) |
| 721 | 100 | T | F | if (!$self->{'_rlanguage'} || $self->{'_rlanguage'} eq 'Unknown' and length $http_accept_language == 2 || $http_accept_language =~ /^..-..$/) |
| 725 | 50 | T | F | unless ($self->{'_rlanguage'}) |
| 732 | 50 | T | F | if ($self->{'_dont_use_ip'}) |
| 741 | 100 | T | F | if (not defined $country and my $c = $self->_what_language) |
| 742 | 50 | T | F | if ($c =~ /^(..)_(..)/) { } |
| 100 | T | F | elsif ($c =~ /^(..)$/) { } |
| 749 | 100 | T | F | if (defined $country) |
| 754 | 50 | T | F | if ($self->{'_cache'}) |
| 759 | 50 | T | F | if ($from_cache) { } |
| 764 | 50 | T | F | if ($l) |
| 766 | 0 | T | F | if (defined $l) |
| 769 | 0 | T | F | if ($language_name) |
| 776 | 50 | T | F | if ($language_name) |
| 777 | 0 | T | F | if (not defined $self->{'_rlanguage'} or $self->{'_rlanguage'} eq "Unknown") |
| 780 | 0 | T | F | unless (exists $self->{'_slanguage'} and $self->{'_slanguage'} ne "Unknown") |
| 785 | 0 | T | F | if ($language_name and $language_code2 and not defined $http_accept_language) { } |
| 793 | 0 | T | F | unless ($code) |
| 794 | 0 | T | F | if ($http_accept_language and $http_accept_language ne $self->{'_rlanguage'}) |
| 799 | 0 | T | F | unless ($code) |
| 802 | 0 | T | F | if ($self->{'_rlanguage'} =~ /(.+)\s\(.+/) |
| 803 | 0 | T | F | if (not defined $http_accept_language or $1 ne $self->{'_rlanguage'}) |
| 809 | 0 | T | F | unless ($code) |
| 817 | 0 | T | F | if ($code) |
| 819 | 0 | T | F | if ($self->{'_slanguage'}) { } |
| 828 | 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'}) { } |
| 866 | 100 | T | F | /^(.+)-/ ? : |
| 868 | 50 | T | F | if (exists $base_languages{$language_string}) |
| 878 | 100 | T | F | if (ref $self) |
| 880 | 100 | T | F | if ($self->{'_what_language'}) |
| 884 | 50 | T | F | if (my $info = $self->{'_info'}) |
| 885 | 0 | T | F | if (my $rc = $info->lang) |
| 893 | 100 | T | F | if (my $rc = $ENV{'HTTP_ACCEPT_LANGUAGE'}) |
| 894 | 100 | T | F | if (ref $self) |
| 900 | 50 | T | F | if (defined $ENV{'LANG'}) |
| 903 | 0 | T | F | if (ref $self) |
| 929 | 50 | T | F | if ($self->{'_country'}) |
| 935 | 50 | T | F | if (defined $ENV{'GEOIP_COUNTRY_CODE'}) |
| 939 | 100 | T | F | if ($ENV{'HTTP_CF_IPCOUNTRY'} and $ENV{'HTTP_CF_IPCOUNTRY'} ne "XX") |
| 947 | 100 | T | F | unless defined $ip |
| 952 | 50 | T | F | unless (is_ipv4($ip)) |
| 954 | 0 | T | F | if ($ip eq '::1') { } |
| 0 | T | F | elsif (not is_ipv6($ip)) { } |
| 964 | 50 | T | F | if (is_private_ip($ip)) |
| 968 | 50 | T | F | if (is_loopback_ip($ip)) |
| 973 | 50 | T | F | if ($self->{'_cache'}) |
| 975 | 0 | T | F | if (defined $self->{'_country'}) |
| 976 | 0 | T | F | if (not $self->{'_country'} =~ /\D/) { } |
| 988 | 50 | T | F | if ($self->{'_have_ipcountry'} == -1) |
| 989 | 50 | T | F | if (eval {
do {
require IP::Country
}
}) { } |
| 999 | 50 | T | F | if ($self->{'_have_ipcountry'}) |
| 1001 | 0 | T | F | if ($self->{'_country'}) { } |
| 0 | T | F | elsif (is_ipv4($ip)) { } |
| 1008 | 50 | T | F | unless (defined $self->{'_country'}) |
| 1009 | 50 | T | F | if ($self->{'_have_geoip'} == -1) |
| 1012 | 50 | T | F | if ($self->{'_have_geoip'} == 1) |
| 1018 | 50 | T | F | if (not defined $self->{'_country'} and $ip ne "45.128.139.41") |
| 1019 | 0 | T | F | if ($self->{'_have_geoipfree'} == -1) |
| 1023 | 0 | T | F | if ($@) { } |
| 1031 | 0 | T | F | if ($self->{'_have_geoipfree'} == 1) |
| 1032 | 0 | T | F | if (my $country = ($self->{'_geoipfree'}->LookUp($ip))[0]) |
| 1038 | 50 | T | F | if ($self->{'_country'} and $self->{'_country'} eq "eu") |
| 1041 | 50 | T | F | if (not $self->{'_country'} and eval {
do {
require LWP::Simple::WithCache;
require JSON::Parse
}
}) |
| 1048 | 0 | T | F | if (my $data = LWP::Simple::WithCache::get("http://www.geoplugin.net/json.gp?ip=$ip")) |
| 1052 | 50 | T | F | unless ($self->{'_country'}) |
| 1067 | 50 | T | F | unless ($@ or not defined $whois or ref $whois ne "HASH") |
| 1068 | 50 | T | F | if (defined $whois->{'Country'}) { } |
| 50 | T | F | elsif (defined $whois->{'country'}) { } |
| 1073 | 50 | T | F | if ($self->{'_country'}) |
| 1074 | 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') { } |
| 1083 | 50 | T | F | if ($self->{'_country'}) { } |
| 1095 | 0 | T | F | unless ($@) |
| 1101 | 50 | T | F | if ($self->{'_country'}) |
| 1104 | 50 | T | F | if ($self->{'_country'} =~ /^(..)\s*#/) |
| 1112 | 50 | T | F | if ($self->{'_country'}) |
| 1113 | 50 | T | F | if (not $self->{'_country'} =~ /\D/) { } |
| 1118 | 50 | T | F | if ($self->{'_country'} eq 'hk') { } |
| 50 | T | F | elsif ($self->{'_country'} eq 'eu') { } |
| 1127 | 0 | T | F | if (subnet_matcher('185.10.104.0/22')->($ip)) { } |
| 1138 | 50 | T | F | if (not $self->{'_country'} =~ /\D/) { } |
| 50 | T | F | elsif ($self->{'_cache'}) { } |
| 1157 | 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')) { } |
| 1162 | 0 | T | F | if ($@) { } |
| 1167 | 0 | T | F | if (-r '/usr/share/GeoIP/GeoIP.dat') { } |
| 1199 | 50 | T | F | if ($self->{'_locale'}) |
| 1207 | 50 | T | F | if (defined $agent and $agent =~ /\((.+)\)/) |
| 1213 | 50 | T | F | if ($candidate =~ /^[a-zA-Z]{2}-([a-zA-Z]{2})$/) |
| 1215 | 0 | T | F | if (my $c = $self->_code2country($1)) |
| 1223 | 50 | T | F | if (eval {
do {
require HTTP::BrowserDetect
}
}) |
| 1227 | 50 | T | F | if ($browser and $browser->country and my $c = $self->_code2country($browser->country)) |
| 1237 | 0 | T | F | if ($country) |
| 1245 | 0 | T | F | unless ($@) |
| 1246 | 0 | T | F | if ($c) |
| 1254 | 0 | T | F | if (defined $ENV{'GEOIP_COUNTRY_CODE'}) |
| 1257 | 0 | T | F | if ($c) |
| 1279 | 0 | T | F | if ($self->{'_timezone'}) |
| 1284 | 0 | T | F | if (my $ip = $ENV{'REMOTE_ADDR'}) { } |
| 1285 | 0 | T | F | if ($self->{'_have_geoip'} == -1) |
| 1288 | 0 | T | F | if ($self->{'_have_geoip'} == 1) |
| 1293 | 0 | T | F | unless ($self->{'_timezone'}) |
| 1294 | 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
}
}) { } |
| 1300 | 0 | T | F | if (my $data = LWP::Simple::WithCache::get("http://ip-api.com/json/$ip")) |
| 1309 | 0 | T | F | if (my $data = LWP::Simple::get("http://ip-api.com/json/$ip")) |
| 1313 | 0 | T | F | if (my $logger = $self->{'logger'}) |
| 1321 | 0 | T | F | if (open my $fin, '<', '/etc/timezone') { } |
| 1330 | 0 | T | F | unless (defined $self->{'_timezone'}) |
| 1341 | 50 | T | F | unless $code |
| 1342 | 100 | T | F | if (defined $self->{'_country'}) { } |
| 1347 | 100 | T | F | unless ($self->{'_cache'}) |
| 1350 | 100 | T | F | if (my $from_cache = $self->{'_cache'}->get('CGI::Lingua' . ":code2language:$code")) |
| 1363 | 50 | T | F | unless $code |
| 1364 | 100 | T | F | if ($self->{'_country'}) { } |
| 1370 | 50 | T | F | if (not $_[0] =~ /No result found in country table/) |
| 1385 | 50 | T | F | unless $code |
| 1387 | 100 | T | F | unless ($self->{'_cache'}) |
| 1389 | 50 | T | F | if (defined $country) |
| 1394 | 100 | T | F | if (my $from_cache = $self->{'_cache'}->get('CGI::Lingua' . ":code2countryname:$code")) |
| 1398 | 50 | T | F | if (my $country = $self->_code2country($code)) |
| 1411 | 50 | T | F | if (ref $self and scalar @messages) |
| 1417 | 50 | T | F | if (my $logger = $self->{'logger'}) |
| 1447 | 0 | T | F | if (defined $self->{'logger'}) { } |