scriptotek / oai-pmh-client
Package for harvesting data from OAI-PMH repositories
Requires
- php: >=5.5
- danmichaelo/quitesimplexmlelement: ~0.4
- evenement/evenement: ~2.0
- guzzlehttp/guzzle: ~6.0
Requires (Dev)
- mockery/mockery: ~0.9
- phpunit/phpunit: ~4.8|~5.5
- sami/sami: ~3.3
README
Note: This package is abandoned. I recommend using the caseyamcl/phpoaipmh package instead. It has an almost identical interface, great code quality and more contributors, so I see no reason to continue maintaining this package.
php-oai-pmh-client
Simple PHP client package for fetching data from an OAI-PMH server, using the Guzzle HTTP client. The returned data is parsed by QuiteSimpleXMLElement.
On network problems, the client will retry a configurable number of times,
emitting a request.error
event each time, before finally throwing
a ConnectionError
.
Install using Composer
composer require scriptotek/oai-pmh-client
Example
require_once('vendor/autoload.php'); use Scriptotek\OaiPmh\Client as OaiPmhClient; $url = 'http://oai.bibsys.no/repository'; $client = new OaiPmhClient($url, array( 'schema' => 'marcxchange', 'user-agent' => 'MyTool/0.1', 'max-retries' => 10, 'sleep-time-on-error' => 30, ));
Fetching a single record
try { $record = $client->record('oai:bibsys.no:biblio:113889372'); } catch (Scriptotek\OaiPmh\ConnectionError $e) { echo $e->getMsg(); die; } catch (Scriptotek\OaiPmh\BadRequestError $e) { echo 'Bad request: ' . $e->getMsg() . "\n"; die; } echo $record->identifier . "\n"; echo $record->datestamp . "\n"; echo $record->data->asXML() . "\n";
Iterating over a record set
foreach ($client->records('') as $record) { echo $record->identifier . "\n"; echo $record->datestamp . "\n"; }
Events
$client->on('request.start', function($verb) { print "Starting " . $verb . " request\n"; }); $client->on('request.error', function($err) { print "Non-fatal error: " . $err . "\n"; }); $client->on('request.complete', function($verb) { print "Completed " . $verb . " request\n"; });
API documentation
API documentation can be generated using e.g. Sami,
which is included in the dev requirements of composer.json
.
php vendor/bin/sami.php update sami.config.php -v
You can view it at scriptotek.github.io/php-oai-pmh-client