Skip to content
Snippets Groups Projects
Commit 1632570d authored by Demian Katz's avatar Demian Katz
Browse files

Adjusted OAI harvester to accept injected HTTP client.

parent 77829479
No related merge requests found
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
* @link http://vufind.org/wiki/importing_records#oai-pmh_harvesting Wiki * @link http://vufind.org/wiki/importing_records#oai-pmh_harvesting Wiki
*/ */
namespace VuFind\Harvester; namespace VuFind\Harvester;
use VuFind\Http\Client, Zend\Console\Console; use Zend\Console\Console;
/** /**
* OAI Class * OAI Class
...@@ -41,12 +41,20 @@ use VuFind\Http\Client, Zend\Console\Console; ...@@ -41,12 +41,20 @@ use VuFind\Http\Client, Zend\Console\Console;
*/ */
class OAI class OAI
{ {
/**
* HTTP client
*
* @var \Zend\Http\Client
*/
protected $client;
/** /**
* URL to harvest from * URL to harvest from
* *
* @var string * @var string
*/ */
protected $baseURL; protected $baseURL;
/** /**
* Target set to harvest (null for all records) * Target set to harvest (null for all records)
* *
...@@ -177,11 +185,15 @@ class OAI ...@@ -177,11 +185,15 @@ class OAI
/** /**
* Constructor. * Constructor.
* *
* @param string $target Target directory for harvest. * @param string $target Target directory for harvest.
* @param array $settings OAI-PMH settings from oai.ini. * @param array $settings OAI-PMH settings from oai.ini.
* @param \Zend\Http\Client $client HTTP client
*/ */
public function __construct($target, $settings) public function __construct($target, $settings, \Zend\Http\Client $client)
{ {
// Store client:
$this->client = $client;
// Don't time out during harvest!! // Don't time out during harvest!!
set_time_limit(0); set_time_limit(0);
...@@ -371,20 +383,20 @@ class OAI ...@@ -371,20 +383,20 @@ class OAI
// Set up retry loop: // Set up retry loop:
while (true) { while (true) {
// Set up the request: // Set up the request:
$request = new Client( $this->client->resetParameters();
null, array('timeout' => 60) // TODO: make timeout configurable $this->client->setUri($this->baseURL);
); // TODO: make timeout configurable
$request->setUri($this->baseURL); $this->client->setOptions(array('timeout' => 60));
// Load request parameters: // Load request parameters:
$query = $request->getRequest()->getQuery(); $query = $this->client->getRequest()->getQuery();
$query->set('verb', $verb); $query->set('verb', $verb);
foreach ($params as $key => $value) { foreach ($params as $key => $value) {
$query->set($key, $value); $query->set($key, $value);
} }
// Perform request and die on error: // Perform request and die on error:
$result = $request->setMethod('GET')->send(); $result = $this->client->setMethod('GET')->send();
if ($result->getStatusCode() == 503) { if ($result->getStatusCode() == 503) {
$delayHeader = $result->getHeaders()->get('Retry-After'); $delayHeader = $result->getHeaders()->get('Retry-After');
$delay = is_object($delayHeader) $delay = is_object($delayHeader)
......
...@@ -102,7 +102,9 @@ class HarvestController extends AbstractBase ...@@ -102,7 +102,9 @@ class HarvestController extends AbstractBase
if (!empty($target) && !empty($settings)) { if (!empty($target) && !empty($settings)) {
Console::writeLine("Processing {$target}..."); Console::writeLine("Processing {$target}...");
try { try {
$harvest = new OAI($target, $settings); $client = $this->getServiceLocator()->get('VuFind\Http')
->createClient();
$harvest = new OAI($target, $settings, $client);
$harvest->launch(); $harvest->launch();
} catch (\Exception $e) { } catch (\Exception $e) {
Console::writeLine($e->getMessage()); Console::writeLine($e->getMessage());
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment