diff --git a/C4/XISBN.pm b/C4/XISBN.pm index 5f3fd510da..cff35c94d7 100644 --- a/C4/XISBN.pm +++ b/C4/XISBN.pm @@ -91,7 +91,7 @@ sub _get_biblio_from_xisbn { sub get_xisbns { my ( $isbn ) = @_; - my ($response,$thing_response,$xisbn_response,$syndetics_response); + my ($response,$thing_response,$xisbn_response,$syndetics_response,$errors); # THINGISBN if ( C4::Context->preference('ThingISBN') ) { my $url = "http://www.librarything.com/api/thingISBN/".$isbn; @@ -117,6 +117,8 @@ sub get_xisbns { unless ($reached_limit) { $xisbn_response = _get_url($url,'xisbn'); } + $errors->{xisbn} = $xisbn_response->{ stat } + if $xisbn_response->{ stat } ne 'ok'; } $response->{isbn} = [ @{ $xisbn_response->{isbn} or [] }, @{ $syndetics_response->{isbn} or [] }, @{ $thing_response->{isbn} or [] } ]; @@ -132,7 +134,12 @@ sub get_xisbns { my $xbiblio= _get_biblio_from_xisbn($response_data->{content}); push @xisbns, $xbiblio if $xbiblio; } - return \@xisbns; + if ( wantarray ) { + return (\@xisbns, $errors); + } + else { + return \@xisbns; + } } sub _get_url { diff --git a/t/db_dependent/XISBN.t b/t/db_dependent/XISBN.t index 2f6d63b5b8..df598ceabb 100755 --- a/t/db_dependent/XISBN.t +++ b/t/db_dependent/XISBN.t @@ -25,7 +25,7 @@ $dbh->{AutoCommit} = 0; my $search_module = new Test::MockModule('C4::Search'); $search_module->mock('SimpleSearch', \&Mock_SimpleSearch ); - +my $errors; my $context = C4::Context->new; my ( $biblionumber_tag, $biblionumber_subfield ) = @@ -73,10 +73,10 @@ t::lib::Mocks::mock_preference( 'ThingISBN', 0 ); t::lib::Mocks::mock_preference( 'XISBN', 1 ); my $results_xisbn; -eval { $results_xisbn = C4::XISBN::get_xisbns($isbn1); }; +eval { ($results_xisbn, $errors) = C4::XISBN::get_xisbns($isbn1); }; SKIP: { - skip "Problem retrieving XISBN", 1 - unless $@ eq ''; + skip "Problem retrieving XISBN (" . $errors->{xisbn} . ")", 1 + if $errors->{xisbn}; is( $results_xisbn->[0]->{biblionumber}, $biblionumber3, "Gets correct biblionumber from a book with a similar isbn using XISBN." );