From b2db11f645a37f8c96c60c1a1bd36bc452decbf3 Mon Sep 17 00:00:00 2001 From: Martha Driscoll Date: Wed, 22 May 2019 16:53:56 -0400 Subject: [PATCH] LP1818144: Overdrive Availability API v.2 Overdrive's improved availability API v2 distinguishes copiesOwned and copiesAvailable at Advantage libraries and also provides consortia totals. This commit points availability lookups to the version 2 API. Signed-off-by: Martha Driscoll --- .../perlmods/lib/OpenILS/Application/EbookAPI/OverDrive.pm | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/EbookAPI/OverDrive.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/EbookAPI/OverDrive.pm index 6eca31eedf..22385f42df 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/EbookAPI/OverDrive.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/EbookAPI/OverDrive.pm @@ -107,6 +107,8 @@ sub initialize { $self->{discovery_base_uri} = $discovery_base_uri || 'https://api.overdrive.com/v1'; my $circulation_base_uri = OpenILS::Application::AppUtils->ou_ancestor_setting_value($ou, 'ebook_api.overdrive.circulation_base_uri'); $self->{circulation_base_uri} = $circulation_base_uri || 'https://patron.api.overdrive.com/v1'; + my $availability_base_uri = OpenILS::Application::AppUtils->ou_ancestor_setting_value($ou, 'ebook_api.overdrive.availability_base_uri'); + $self->{availability_base_uri} = $availability_base_uri || 'https://api.overdrive.com/v2'; my $account_id = OpenILS::Application::AppUtils->ou_ancestor_setting_value($ou, 'ebook_api.overdrive.account_id'); if ($account_id) { @@ -204,12 +206,16 @@ sub set_http_headers { my $token; my $circulation_base_uri = $self->{circulation_base_uri}; my $discovery_base_uri = $self->{discovery_base_uri}; + my $availability_base_uri = $self->{availability_base_uri}; if ($req->{uri} =~ /^$circulation_base_uri/) { $auth_type = 'Bearer'; $token = $self->{patron_token}; } elsif ($req->{uri} =~ /^$discovery_base_uri/) { $auth_type = 'Bearer'; $token = $self->{bearer_token}; + } elsif ($req->{uri} =~ /^$availability_base_uri/) { + $auth_type = 'Bearer'; + $token = $self->{bearer_token}; } else { $auth_type = 'Basic'; $token = $self->{basic_token}; @@ -392,7 +398,7 @@ sub get_title_info { return; } -# GET http://api.overdrive.com/v1/collections/L1BAAEAAA2i/products/76C1B7D0-17F4-4C05-8397-C66C17411584/availability +# GET https://api.overdrive.com/v2/collections/v1L1BAwAAAA24/products/622708F6-78D7-453A-A7C5-3FE6853F3167/availability # User-Agent: {Your application} # Authorization: Bearer {OAuth access token} # Host: api.overdrive.com @@ -403,7 +409,7 @@ sub do_availability_lookup { $self->get_library_info() if (!$self->{collection_token}); my $req = { method => 'GET', - uri => $self->{discovery_base_uri} . "/collections/" . $self->{collection_token} . "/products/$title_id/availability" + uri => $self->{availability_base_uri} . "/collections/" . $self->{collection_token} . "/products/$title_id/availability" }; if (my $res = $self->handle_http_request($req, $self->{session_id})) { return $res->{content}->{available}; @@ -439,7 +445,7 @@ sub do_holdings_lookup { # request copy availability totals my $avail_req = { method => 'GET', - uri => $self->{discovery_base_uri} . "/collections/$collection_token/products/$title_id/availability" + uri => $self->{availability_base_uri} . "/collections/$collection_token/products/$title_id/availability" }; if (my $avail_res = $self->handle_http_request($avail_req, $self->{session_id})) { $holdings->{copies_owned} = $avail_res->{content}->{copiesOwned}; -- 2.11.0