Open Journal Systems  3.3.0
OAIHandler.inc.php
1 <?php
2 
16 define('SESSION_DISABLE_INIT', 1); // FIXME?
17 
18 import('classes.oai.ojs.JournalOAI');
19 import('classes.handler.Handler');
20 
21 use \Firebase\JWT\JWT;
22 
23 class OAIHandler extends Handler {
24 
29  function index($args, $request) {
30  $this->validate(null, $request);
31 
32  PluginRegistry::loadCategory('oaiMetadataFormats', true);
33 
34  $oai = new JournalOAI(new OAIConfig($request->url(null, 'oai'), Config::getVar('oai', 'repository_id')));
35  if (!$request->getJournal() && $request->getRequestedJournalPath() != 'index') {
36  $dispatcher = $request->getDispatcher();
37  return $dispatcher->handle404();
38  }
39  $oai->execute();
40  }
41 
45  function validate($requiredContexts = null, $request = null) {
46  // Site validation checks not applicable
47  //parent::validate($requiredContexts, $request);
48 
49  if (!Config::getVar('oai', 'oai')) {
50  $request->redirect(null, 'index');
51  }
52 
53  // Permit the use of the Authorization header and an API key for access to unpublished content (article URLs)
54  if ($header = array_search('Authorization', array_flip(getallheaders()))) {
55  list($bearer, $jwt) = explode(' ', $header);
56  if (strcasecmp($bearer, 'Bearer') == 0) {
57  $apiToken = json_decode(JWT::decode($jwt, Config::getVar('security', 'api_key_secret', ''), array('HS256')));
58  $this->setApiToken($apiToken);
59  }
60  }
61  }
62 
66  function requireSSL() {
67  return false;
68  }
69 }
70 
71 
PKPHandler\setApiToken
setApiToken($apiToken)
Definition: PKPHandler.inc.php:568
OAIHandler
Handle OAI protocol requests.
Definition: OAIHandler.inc.php:23
OAIHandler\index
index($args, $request)
Definition: OAIHandler.inc.php:29
PluginRegistry\loadCategory
static loadCategory($category, $enabledOnly=false, $mainContextId=null)
Definition: PluginRegistry.inc.php:103
JournalOAI
OJS-specific OAI interface. Designed to support both a site-wide and journal-specific OAI interface (...
Definition: JournalOAI.inc.php:22
Config\getVar
static getVar($section, $key, $default=null)
Definition: Config.inc.php:35
OAIHandler\requireSSL
requireSSL()
Definition: OAIHandler.inc.php:66
OAIHandler\validate
validate($requiredContexts=null, $request=null)
Definition: OAIHandler.inc.php:45
Handler
Base request handler application class.
Definition: Handler.inc.php:18
OAIConfig
Data structures associated with the OAI request handler.
Definition: OAIStruct.inc.php:23