sub resolve_issn
{
- my ($class, $c, $baseurl) = @_;
+ my ($class, $issn, $baseurl) = @_;
- if (length($c) <= 9) {
+ if (length($issn) <= 9) {
my $session = OpenSRF::AppSession->create("open-ils.resolver");
+ my $request = "";
- my $request = $session->request("open-ils.resolver.resolve_holdings.raw", "issn", $c, $baseurl)->gather();
- if ($request) {
- return $request;
- }
- $session->disconnect();
+ eval {
+ local $SIG{ALRM} = sub { die @_ };
+ #maybe make this passed in, probably different for result list than summary?
+ alarm(10); # set timeout
+ $request = $session->request("open-ils.resolver.resolve_holdings.raw", "issn", $issn, $baseurl)->gather();
+ };
+
+ if($@ =~ /\b ALRM \b/xms) {
+
+ # timeout!
+ $session->disconnect();
+ my @sfx_result;
+
+ #if a request times out, put in direct link to resolver
+ push @sfx_result, {
+ public_name => "Title check",
+ target_url => $baseurl . "?ctx_ver=Z39.88-2004&rft.issn=" . $issn,
+ target_coverage => "Request timed out, use link to check directly.",
+ target_embargo => "",
+ };
+
+ # Don't return the list unless it contains something
+ if (scalar(@sfx_result)) {
+ return \@sfx_result;
+ }
+ return "";
+ }
+ if ($request) {
+ return $request;
+ }
+ $session->disconnect();
}
return "";
sub resolve_isbn
{
- my ($class, $c, $baseurl) = @_;
+ my ($class, $isbn, $baseurl) = @_;
my $session = OpenSRF::AppSession->create("open-ils.resolver");
- my $request = $session->request("open-ils.resolver.resolve_holdings.raw", "isbn", $c, $baseurl)->gather();
+ my $request = $session->request("open-ils.resolver.resolve_holdings.raw", "isbn", $isbn, $baseurl)->gather();
if ($request) {
return $request;