LP#1772680: Removed hard coded API_URL from code and add to the database
authorJaswinder Singh <Jaswinder.Singh0011@gmail.com>
Mon, 1 Oct 2018 16:57:12 +0000 (12:57 -0400)
committerChris Sharp <csharp@georgialibraries.org>
Wed, 19 Dec 2018 19:04:07 +0000 (14:04 -0500)
Signed-off-by: Jaswinder Singh <jaswinder.singh0011@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Open-ILS/examples/fm_IDL.xml
Open-ILS/src/perlmods/lib/OpenILS/Application/EbookAPI/RBDigital.pm

index fbb9f13..7489037 100644 (file)
@@ -12927,6 +12927,7 @@ SELECT  usr,
                        <field reporter:label='Vendor Key' name="vendor_key" reporter:datatype="text" />
                        <field reporter:label='Is Enabled' name="is_enabled" reporter:datatype="bool" />
                        <field reporter:label='Display Order' name="display_order" reporter:datatype="id" />
+                       <field reporter:label='API URL' name="api_url" reporter:datatype="text" />       
                        
                </fields>
                <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
index df6d51a..531f134 100644 (file)
@@ -85,7 +85,15 @@ sub initialize {
     my $self = shift;
     my $ou = $self->{ou};
 
-    $self->{base_uri} = OpenILS::Application::AppUtils->ou_ancestor_setting_value($ou, 'ebook_api.rbdigital.base_uri') || EBOOK_API_DOMAIN;
+    # Get the API URl
+    if (TEST_QA) {
+        $self->{base_uri} = EBOOK_API_DOMAIN_QA;
+    } else {
+        my $digital_services_req = _get_digital_services(EBOOK_API_VENDOR);
+        if ($digital_services_req) {   
+            $self->{base_uri} = $digital_services_req->content->[0]->api_url;
+        }
+    }
 
     my $object_rdsa = _get_vendor_library($ou);
 
@@ -246,27 +254,15 @@ sub do_basic_search {
     $basic_search_uri = _build_search_URI($is_eg_advanced_search, $search_type, $media_format, $value_to_search, $facets, $search_inputs, $sort_by, $sort_order, $page_index, $page_size);
 
     $logger->info('EbookAPI: Calling the search API: '.$uri);
-    if (TEST_QA) {
-        $uri = EBOOK_API_DOMAIN_QA."/$basic_search_uri";
-        $req = {
-            method => 'GET',
-            uri    => $uri,
-            headers => {
-                'Authorization' => 'bearer ' . EBOOK_API_QA_TOKEN,
-                'Content-Type'  => 'application/x-www-form-urlencoded;charset=UTF-8'
-            }
-        };
-    } else {
-        $uri = "$base_uri/libraries/$library_id/$basic_search_uri";
-        $req = {
-            method => 'GET',
-            uri    => $uri,
-            headers => {
-                'Authorization' => 'Basic ' . $self->{basic_token},
-                'Content-Type'  => 'application/x-www-form-urlencoded;charset=UTF-8'
-            }
-        };
-    }
+    $uri = "$base_uri/libraries/$library_id/$basic_search_uri";
+    $req = {
+        method => 'GET',
+        uri    => $uri,
+        headers => {
+            'Authorization' => 'Basic ' . $self->{basic_token},
+            'Content-Type'  => 'application/x-www-form-urlencoded;charset=UTF-8'
+        }
+    };
 
     my $res = $self->request($req, $session_id);
     
@@ -905,16 +901,16 @@ sub get_patron_holds {
 sub is_authorized_patron {
     my ($self, $home_library_id) = @_;
     my $is_authorized = 0;
-    my $ebook_rds_req;
+    my $ebook_rdsa_req;
 
     my $pcrud = OpenSRF::AppSession->create('open-ils.pcrud');
     $pcrud->connect();
 
-    $ebook_rds_req = $pcrud->request('open-ils.pcrud.search.ebook_rdsa.atomic', "ANONYMOUS", 
+    $ebook_rdsa_req = $pcrud->request('open-ils.pcrud.search.ebook_rdsa.atomic', "ANONYMOUS", 
         { home_ou => $home_library_id }
     )->gather();
     
-    if ($ebook_rds_req && scalar (@$ebook_rds_req) > 0) {
+    if ($ebook_rdsa_req && scalar (@$ebook_rdsa_req) > 0) {
         #read the library.id to find corrosponding library id from digital services atuhorized table
         $is_authorized = 1;
     }
@@ -1005,9 +1001,7 @@ sub save_search_fields {
 
     # First, get the Digital Service ID by name
     $logger->info("EbookAPI: Calling to retreive vendor id from db.");
-    my $digital_services_req = $pcrud->request('open-ils.pcrud.search.ebook_rds.atomic', "ANONYMOUS",
-        { vendor_key => $vendor_key }
-    )->recv();
+    my $digital_services_req = _get_digital_services($vendor_key);
 
     if ($digital_services_req) {
         $digital_services_id = $digital_services_req->content->[0]->id;
@@ -1204,4 +1198,15 @@ sub remove_search_field_mappings {
 
     return { status => "success" };
 }
+
+sub _get_digital_services {
+    my ($vendor_key) = @_;
+
+    $logger->info("EbookAPI: Calling to retreive vendor ($vendor_key) information from db.");
+    my $pcrud = OpenSRF::AppSession->create('open-ils.pcrud');
+    $pcrud->connect();
+    return $pcrud->request('open-ils.pcrud.search.ebook_rds.atomic', "ANONYMOUS",
+        { vendor_key => $vendor_key }
+    )->recv();
+}
 1;