From d7080dfe1eea308dfa5bbff803569921828d96c1 Mon Sep 17 00:00:00 2001 From: Demian Katz <demian.katz@villanova.edu> Date: Thu, 13 Sep 2018 12:55:43 -0400 Subject: [PATCH] Make LibGuides base URL configurable, update defaults. - Use SSL endpoint URL and version 2 in default configuration. - Retain version 1 as default in code for backward compatibility. - Resolves VUFIND-1225. --- config/vufind/LibGuides.ini | 5 ++++- .../Factory/LibGuidesBackendFactory.php | 19 +++++++++---------- .../Backend/LibGuides/Connector.php | 12 ++++++++---- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/config/vufind/LibGuides.ini b/config/vufind/LibGuides.ini index 7259b38f9df..9e91e418b0e 100644 --- a/config/vufind/LibGuides.ini +++ b/config/vufind/LibGuides.ini @@ -7,7 +7,10 @@ timeout = 30 iid = my-id ; API version to use (1 or 2) -version = 1 +version = 2 + +; Base URL for API +baseUrl = https://lgapi.libapps.com/widgets.php ; This section controls the result limit options for search results. default_limit ; sets the default number of results per page. limit_options is a comma-separated diff --git a/module/VuFind/src/VuFind/Search/Factory/LibGuidesBackendFactory.php b/module/VuFind/src/VuFind/Search/Factory/LibGuidesBackendFactory.php index 40437ccd5e1..e5cdf06beb8 100644 --- a/module/VuFind/src/VuFind/Search/Factory/LibGuidesBackendFactory.php +++ b/module/VuFind/src/VuFind/Search/Factory/LibGuidesBackendFactory.php @@ -102,8 +102,7 @@ class LibGuidesBackendFactory implements FactoryInterface */ protected function createBackend(Connector $connector) { - $defaultSearch = isset($this->libGuidesConfig->General->defaultSearch) - ? $this->libGuidesConfig->General->defaultSearch : null; + $defaultSearch = $this->libGuidesConfig->General->defaultSearch ?? null; $backend = new Backend( $connector, $this->createRecordCollectionFactory(), $defaultSearch ); @@ -120,20 +119,20 @@ class LibGuidesBackendFactory implements FactoryInterface protected function createConnector() { // Load credentials: - $iid = isset($this->libGuidesConfig->General->iid) - ? $this->libGuidesConfig->General->iid : null; + $iid = $this->libGuidesConfig->General->iid ?? null; // Pick version: - $ver = isset($this->libGuidesConfig->General->version) - ? $this->libGuidesConfig->General->version : 1; + $ver = $this->libGuidesConfig->General->version ?? 1; + + // Get base URI, if available: + $baseUrl = $this->libGuidesConfig->General->baseUrl ?? null; // Build HTTP client: $client = $this->serviceLocator->get('VuFindHttp\HttpService') - ->createClient(); - $timeout = isset($this->libGuidesConfig->General->timeout) - ? $this->libGuidesConfig->General->timeout : 30; + ->createClient($baseUrl); + $timeout = $this->libGuidesConfig->General->timeout ?? 30; $client->setOptions(['timeout' => $timeout]); - $connector = new Connector($iid, $client, $ver); + $connector = new Connector($iid, $client, $ver, $baseUrl); $connector->setLogger($this->logger); return $connector; } diff --git a/module/VuFindSearch/src/VuFindSearch/Backend/LibGuides/Connector.php b/module/VuFindSearch/src/VuFindSearch/Backend/LibGuides/Connector.php index 6dd9f6e3a9b..2456a221959 100644 --- a/module/VuFindSearch/src/VuFindSearch/Backend/LibGuides/Connector.php +++ b/module/VuFindSearch/src/VuFindSearch/Backend/LibGuides/Connector.php @@ -81,14 +81,18 @@ class Connector implements \Zend\Log\LoggerAwareInterface * @param string $iid Institution ID * @param HttpClient $client HTTP client * @param float $apiVersion API version number + * @param string $baseUrl API base URL (optional) */ - public function __construct($iid, $client, $apiVersion = 1) + public function __construct($iid, $client, $apiVersion = 1, $baseUrl = null) { $this->apiVersion = $apiVersion; - if ($this->apiVersion < 2) { - $this->host = "http://api.libguides.com/api_search.php?"; + if (empty($baseUrl)) { + $this->host = ($this->apiVersion < 2) + ? "http://api.libguides.com/api_search.php?" + : "http://lgapi.libapps.com/widgets.php?"; } else { - $this->host = "http://lgapi.libapps.com/widgets.php?"; + // Ensure appropriate number of question marks: + $this->host = rtrim($baseUrl, '?') . '?'; } $this->iid = $iid; $this->client = $client; -- GitLab