1. Go to this page and download the library: Download caseyamcl/phpoaipmh library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
caseyamcl / phpoaipmh example snippets
// Quick and easy 'build' method
$myEndpoint = \Phpoaipmh\Endpoint::build('http://some.service.com/oai');
// Or, create your own client instance and pass it to `Endpoint::__construct()`
$client = new \Phpoaipmh\Client('http://some.service.com/oai');
$myEndpoint = new \Phpoaipmh\Endpoint($client);
// Result will be a SimpleXMLElement object
$result = $myEndpoint->identify();
var_dump($result);
// Results will be iterator of SimpleXMLElement objects
$results = $myEndpoint->listMetadataFormats();
foreach($results as $item) {
var_dump($item);
}
// Recs will be an iterator of SimpleXMLElement objects
$recs = $myEndpoint->listRecords('someMetaDataFormat');
// The iterator will continue retrieving items across multiple HTTP requests.
// You can keep running this loop through the *entire* collection you
// are harvesting. All OAI-PMH and HTTP pagination logic is hidden neatly
// behind the iterator API.
foreach($recs as $rec) {
var_dump($rec);
}
// Retrieve records from Jan 1, 2018 through October 1, 2018
$recs = $myEndpoint->listRecords('someMetaDataFormat', new \DateTime('2018-01-01'), new \DateTime('2018-10-01'));
foreach($recs as $rec) {
var_dump($rec);
}
use Phpoaipmh\Client,
Phpoaipmh\Endpoint,
Phpoaipmh\Granularity;
$client = new Client('http://some.service.com/oai');
$myEndpoint = new Endpoint($client, Granularity::DATE_AND_TIME);
foreach ($myEndpoint->listSets() as $set) {
var_dump($set);
}
foreach ($myEndpoint->listRecords('someMetadataFormat', null, null 'someSetName') as $record) {
var_dump($record);
}
use GuzzleHttp\Client as GuzzleClient;
use Phpoaipmh\Client;
use Phpoaipmh\Endpoint;
use Phpoaipmh\HttpAdapter\GuzzleAdapter;
$guzzle = new GuzzleAdapter(new GuzzleClient([
'connect_timeout' => 2.0,
'timeout' => 10.0
]));
$myEndpoint = new Endpoint(new Client('http://some.service.com/oai', $guzzle));
use Phpoaipmh\Client,
Phpoaipmh\HttpAdapter\CurlAdapter;
$adapter = new CurlAdapter();
$adapter->setCurlOpts([CURLOPT_TIMEOUT => 120]);
$client = new Client('http://some.service.com/oai', $adapter);
$myEndpoint = new Endpoint($client);
use Phpoaipmh\Client,
Phpoaipmh\HttpAdapter\GuzzleAdapter;
$adapter = new GuzzleAdapter();
$adapter->getGuzzleClient()->setDefaultOption('timeout', 120);
$client = new Client('http://some.service.com/oai', $adapter);
$myEndpoint = new Endpoint($client);
use GuzzleRetry\GuzzleRetryMiddleware;
use GuzzleHttp\Client as GuzzleClient;
use GuzzleHttp\HandlerStack;
// Setup the the Guzzle client with the retry middleware
$stack = HandlerStack::create();
$stack->push(GuzzleRetryMiddleware::factory());
$guzzleClient = new GuzzleClient(['handler' => $stack]);
// Setup the Guzzle adpater and PHP OAI-PMH client
$guzzleAdapter = new \Phpoaipmh\HttpAdapter\GuzzleAdapter($guzzleClient);
$client = new \Phpoaipmh\Client('http://some.service.com/oai', $guzzleAdapter);
// Create a Retry Guzzle Subscriber
$retrySubscriber = new \GuzzleHttp\Subscriber\Retry\RetrySubscriber([
'delay' => function($numRetries, \GuzzleHttp\Event\AbstractTransferEvent $event) {
$waitSecs = $event->getResponse()->getHeader('Retry-After') ?: '5';
return ($waitSecs * 1000) + 1000; // wait one second longer than the server said to
},
'filter' => \GuzzleHttp\Subscriber\Retry\RetrySubscriber::createStatusFilter(),
]);
// Manually create a Guzzle HTTP adapter
$guzzleAdapter = new \Phpoaipmh\HttpAdapter\GuzzleAdapter();
$guzzleAdapter->getGuzzleClient()->getEmitter()->attach($retrySubscriber);
$client = new \Phpoaipmh\Client('http://some.service.com/oai', $guzzleAdapter);
use Emarref\Guzzle\Middleware\ParamMiddleware
use GuzzleHttp\Client as GuzzleClient;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Middleware;
use Psr\Http\Message\RequestInterface;
// Setup the the Guzzle stack
$stack = HandlerStack()::create();
$stack->push(new ParamMiddleware(['api_key' => 'xyz123']));
// Setup Guzzle client, adapter, and PHP OAI-PMH client
$guzzleClient = new GuzzleClient(['handler' => $stack])
$guzzleAdapter = new \Phpoaipmh\HttpAdapter\GuzzleAdapter($guzzleClient)
$client = new \Phpoaipmh\Client('http://some.service.com/oai', $guzzleAdapter);
// Create a function or class to add parameters to a request
$addParamsListener = function(\GuzzleHttp\Event\BeforeEvent $event) {
$req = $event->getRequest();
$req->getQuery()->add('api_key', 'xyz123');
// You could do other things to the request here, too, like adding a header..
$req->addHeader('Some-Header', 'some-header-value');
};
// Manually create a Guzzle HTTP adapter
$guzzleAdapter = new \Phpoaipmh\HttpAdapter\GuzzleAdapter();
$guzzleAdapter->getGuzzleClient()->getEmitter()->on('before', $addParamsListener);
$client = new \Phpoaipmh\Client('http://some.service.com/oai', $guzzleAdapter);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.