}
return "rec.id=" . cql_quote($id);
+ #return "rec.id_raw=" . cql_quote($id);
}
confess "_irspy_identifier2target(): id is undefined"
if !defined $id;
- my($protocol, $target) = ($id =~ /(.*?):(.*)/);
+ my($prefix, $protocol, $target) = ($id =~ /([^:]*,)?(.*?):(.*)/);
+ $prefix ||= "";
if (uc($protocol) eq "Z39.50" || uc($protocol) eq "TCP") {
- return "tcp:$target";
+ return "${prefix}tcp:$target";
} elsif (uc($protocol) eq "SRU") {
- return "sru=get,http:$target";
+ return "${prefix}sru=get,http:$target";
} elsif (uc($protocol) eq "SRW") {
- return "sru=srw,http:$target";
+ return "${prefix}sru=srw,http:$target";
}
warn "_irspy_identifier2target($id): unrecognised protocol '$protocol'";
sub calc_reliability_stats {
my($xc) = @_;
+ my $sixtyDaysAgo = time() - 60*24*60*60;
+ my $iso60DA = isodate($sixtyDaysAgo);
my @allpings = $xc->findnodes("i:status/i:probe");
- my $nall = @allpings;
+
+ my($nall, $nok) = (0, 0);
+ foreach my $node (@allpings) {
+ my $ok = $xc->findvalue('@ok', $node);
+ my $when = $node->to_literal();
+ #warn "$when cmp $iso60DA == ", ($when cmp $iso60DA), "\n";
+ next if $when lt $iso60DA;
+ $nall++;
+ $nok += !!$ok;
+ }
+
return (0, 0, 0) if $nall == 0;
- my @okpings = $xc->findnodes('i:status/i:probe[@ok = "1"]');
- my $nok = @okpings;
my $percent = int(100*$nok/$nall + 0.5);
return ($nok, $nall, $percent);
}
my $rec = shift;
my %args = @_;
- my %required = map { $_ => 1 } qw/port host database/;
+ my %required = map { $_ => 1 } qw/port host database protocol/;
my %optional = map { $_ => 1 } qw/country type hosturl contact language/;
my %tests = ( %required, %args );
my $id = irspy_make_identifier($protocol, $host, $port, $dbname);
+ if ($protocol =~ /\s+$/ || $dbname =~ /\s+$/) {
+ warn "xxx: $protocol:$host:$port:$dbname: whitespaces\n";
+ }
+
my @errors = $id;
+ if ($tests{'protocol'}) {
+ push(@errors, 'protocol number is not valid') if $protocol !~ /^(z39\.50|sru|srw|tcp)$/i;
+ }
+
if ($tests{'port'}) {
- push(@errors, 'This port number is not valid') if $port !~ /^\d+$/;
+ push(@errors, 'port number is not valid') if $port !~ /^\d+$/;
}
if ($tests{'host'}) {
- push(@errors, 'This host name is not valid') if $host !~ /^[0-9a-z]+[0-9a-z\.\-]*\.[0-9a-z]+$/i;
+ push(@errors, 'host name is not valid') if $host !~ /^[0-9a-z]+[0-9a-z\.\-]*\.[0-9a-z]+$/i;
}
if ($tests{'database'}) {
- push(@errors, 'This database name is not valid') if $dbname !~ /^[\w_\-\.]+$/i;
+ push(@errors, 'database name is not valid') if $dbname =~ m,/,i;
+ push(@errors, 'database has trailing spaces') if $dbname =~ /^\s+|\s+$/;
}
if ($tests{'hosturl'}) {