This is an old revision of the document!


unAPI.php
<?php
 
/*
 *  Purpose
 *
 *  This is an implementation of an unAPI for PICA-LBSs.
 *  It uses the XML-interface of the OPC4 for extracting bibliographic
 *  data.
 *  For the specification of unAPI, see <http://unapi.info/specs/>.
 */
 
/*
 *  Copyright
 *
 *  Copyright 2008 2009 Goetz Hatop <hatop@ub.uni-marburg.de>.
 *  Goetz Hatop's original Version can be found at
 *  <ftp://ftp.ub.uni-marburg.de/pub/research/unapi.tar.gz>.
 *
 *  Copyright 2009 2010 Stephan Rosenke <rosenke@ulb.tu-darmstadt.de>.
 */
 
/*
 *  License
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
/*
 *  Version
 *
 *  0.1
 */
 
/*
 *  Changelog
 *
 *  20100110:	Some style improvements, added comments, removed some old code.
 *  20100109:	Some style improvements, added comments.
 *  20091216:	Some minor style and other corrections.
 *  20091215:   Added JSON as format.
 *  20091214:   s/require/require_once/.
 *              Made last switch() more validator compliant.
 *  20091211:	Added HTTP-Response-Codes to some cases in the last switch.
 *		Corrected answer if format=''.
 *		Added BibTex as format.
 *  20091210:	Put class Picappn to PicaRecord.php.
 *		Inserted conditional for textual output of array.
 *		Ordered final switch() alphabetically.
 *		Added format "plain", renamed "picaplus" to "extpp".
 *		Put header() in the case-loops in final switch().
 *  20091210:	Started with Goetz Hatop's version of 2009-12-08.
 */
 
 
/*
 *
 *  DO NOT MESS BEHIND THIS LINE
 *
 */
 
//  include some objects and methods
require_once('unAPI.inc.php');
 
//  make some GET-variables a little bit handier
$format = $_GET['format'];
$id = $_GET['id'];
 
/*
 *  Output if no id-parameter or no parameter at all is given.
 *  Plain-format is not announced.
 */
$noparam = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<formats>
<format name=\"bibtex\" type=\"text/plain\" />
<format name=\"dc\" type=\"application/xml\" />
<format name=\"extpp\" type=\"application/xml\" />
<format name=\"json\" type=\"application/json\" />
<format name=\"rdf\" type=\"application/xml\" />
<format name=\"text\" type=\"text/plain\" />
<format name=\"xml\" type=\"application/xml\" />
</formats>
";
 
/*
 *  check if $id is not empty, if it's empty show
 *  available formats.
 */
if (!isset($id) || $id == '') {
  header('Content-type: application/xml');
  echo "$noparam";
  return;
}
 
//  instantiate new Picappn()
$pica = new Picappn();
 
//  set PPN as identifier
$pica->setPpn($id);
 
/*
 *  This is no part of the unAPI but for debugging.
 *  It is triggered by supplying "array" as $format and print_rs the
 *  pica-data as array.
 */
if ($format == "array") {
  echo "<head></head>\n<body>\n <pre>\n";
  print_r($pica->getArray());
  echo " </pre>\n</body>\n";
  die(0);
}
 
//  Final switch for printing result according to $format
switch ($format) {
  //  BibTeX
  case 'bibtex':
     $res = $pica->getBibTex();
     final_result($res, 'text/plain');
     break;
  //  Dublin Core
  case 'dc':
     $res = $pica->getDublinCore();
     final_result($res, 'application/xml');
     break;
  //  External PICA+
  case 'extpp':
     $res = $pica->getPicaPlus();
     final_result($res, 'application/xml');
     break;
  //  JSON
  case 'json':
     $res = $pica->getJson();
     final_result($res, 'application/json');
     break;
  //  pseudo-XML
  case 'plain':
     $res = $pica->getPlain();
     break;
  //  RDF
  case 'rdf':
     $res = $pica->getDublinCoreRDF();
     final_result($res, 'application/xml');
     break;
  //  plain text
  case 'text':
     $res = $pica->getText();
     final_result($res, 'text/plain');
     break;
  //  XML
  case 'xml':
     $res = $pica->getXmlData();
     final_result($res, 'application/xml');
     break;
  //  if no $format is given but $id is set
  case '':
     header('HTTP/1.0 300 Multiple Choices');
     header('Content-type: application/xml');
     echo "$noparam";
     break;
  //  for all other values of $format
  default:
     header('HTTP/1.0 406 Not Acceptable');
     break;
}
?>
buechereielektrik/unapi/unapi.php.1263158640.txt · Last modified: 2010-01-10 22:24 by rosenke
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0