Bug 29320: Update OverDrive availability to V2

This patch updates the call to overdrive_proxy to allow passing a version
and updates the code to use V2 for availability

To test:
1 - Enable OverDrive integration by setting the sysprefs
2 - Log in to your overdrive account in the Koha opac
3 - Perform a search and note availability display
4 - Confirm you can checkout/hold/return books
5 - Apply patch
6 - Repeat search and test functionality
7 - Note that title with '0 out of 0 copies available' now say 'Currently unavailable'

Signed-off-by: Owen Leonard <oleonard@myacpl.org>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
(cherry picked from commit 3eb290c949)

Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com>
This commit is contained in:
Nick Clemens 2021-10-26 11:22:04 +00:00 committed by Andrew Fuerste-Henry
parent 554d6ff354
commit 7b43ac2544
3 changed files with 10 additions and 5 deletions

View File

@ -78,13 +78,17 @@
$availability_summary.html( '<span class="label">' + _("Availability:") + ' </span> ' + _("Loading...") );
KOHA.OverDrive.Get(
prod.links.availability.href,
{},
prod.links.availabilityV2.href,
{ version: 2},
function ( data ) {
if ( data.error ) return;
if( data.availabilityType == 'AlwaysAvailable' ){
$availability_summary.html( '<span class="label">' + _("Availability:") + ' </span> ' + '<span class="available"><b>' + _("Always available") + '</b></span>' );
} else if ( data.availabilityType == 'LimitedAvailability' && data.available ) {
$availability_summary.html( '<span class="label">' + _("Availability:") + ' </span> ' + '<span class="available"><b>' + _("Currently available") + '</b></span>' );
} else if ( !data.available ) {
$availability_summary.html( '<span class="label">' + _("Availability:") + ' </span> ' + '<span class="unavailable"><b>' + _("Currently unavailable") + '</b></span>' );
} else {
$availability_summary.html( '<span class="label">' + _("Availability:") + ' </span> ' + '<span class="available"><b>' + _("Items available:") + ' </b>' + data.copiesAvailable + " " + _("out of") + ' ' + data.copiesOwned + '</span>' );
}
@ -94,7 +98,7 @@
}
$tr.find( '.info' ).each(function() {
KOHA.OverDriveCirculation.add_actions(this, data.id, data.copiesAvailable);
KOHA.OverDriveCirculation.add_actions(this, data.reserveId, data.copiesAvailable);
});
}
);

View File

@ -11,7 +11,7 @@ KOHA.OverDrive = ( function() {
Get: function( url, params, callback ) {
$.ajax( {
type: 'GET',
url: url.replace( /https?:\/\/api.overdrive.com\/v1/, proxy_base_url ),
url: url.replace( /https?:\/\/api.overdrive.com\/v[1|2]/, proxy_base_url ),
dataType: 'json',
data: params,
error: function( xhr, error ) {

View File

@ -59,10 +59,11 @@ if ( !(C4::Context->preference('OverDriveClientKey') && C4::Context->preference(
exit;
}
my $version = $query->param('version') // 1;
my $fixed_query = $query->query_string;
$fixed_query =~ tr/;/&/;
my $request = HTTP::Request::Common::GET( "https://api.overdrive.com/v1" . $query->path_info . '?' . $fixed_query );
my $request = HTTP::Request::Common::GET( "https://api.overdrive.com/v$version" . $query->path_info . '?' . $fixed_query );
$request->header( Authorization => $token );
my $ua = LWP::UserAgent->new( "Koha " . Koha::version() );