|  | <?php
# @name: ops_image.php
# @version: 0.1
# @creation_date: 2021-09-24
# @license: The MIT License <https://opensource.org/licenses/MIT>
# @author: Simon Bowie <ad7588@coventry.ac.uk>
# @purpose: Display images from OPS API image service
# @acknowledgements:
# OPS documented at https://www.epo.org/searching-for-patents/data/web-services/ops.html
# OPS RESTful API specification at http://documents.epo.org/projects/babylon/eponet.nsf/0/F3ECDCC915C9BCD8C1258060003AA712/$File/ops_v3.2_documentation_-_version_1.3.16_en.pdf
# OPS API functions list at https://developers.epo.org/ops-v3-2/apis
include '../ops_api.php';
if(isset($_GET["doc_ref"])){
  $access_token = get_access_token();
  // OPS API credentials (details at http://documents.epo.org/projects/babylon/eponet.nsf/0/F3ECDCC915C9BCD8C1258060003AA712/$File/ops_v3.2_documentation_-_version_1.3.16_en.pdf)
  $ops_url = $_ENV["OPS_URL"] . 'rest-services/published-data/publication/epodoc/' . $document_reference . '/images';
  // Set up API call
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $ops_url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Bearer $access_token"));
  // Give back curl result
  $response = curl_exec($ch);
  curl_close($ch);
  if (strpos($response,"No results found") === false ) {
		// Turn the API response into useful XML
		$xml = new SimpleXMLElement($response);
    // Retrieve image path from that XML
    $drawings_url = $_ENV["OPS_URL_IMAGES"] . '3.2/rest-services/' . $xml->xpath("///ops:document-instance[@desc='Drawing']/@link")[0][0]->__toString() . '?Range=1';
    // Set up API call
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $drawings_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Bearer $access_token"));
    // Give back curl result
    $response = curl_exec($ch);
    curl_close($ch);
    //Display the image in the browser
    header('Content-type: image/jpeg');
    echo $response;
  }
}
?>
 |