Ejemplo n.º 1
0
 /**
  * Dispatch service call
  * @param string $ps_endpoint
  * @param RequestHTTP $po_request
  * @return array
  * @throws Exception
  */
 public static function dispatch($ps_endpoint, $po_request)
 {
     $vs_cache_key = $po_request->getHash();
     if (!$po_request->getParameter('noCache', pInteger)) {
         if (ExternalCache::contains($vs_cache_key, "SimpleAPI_{$ps_endpoint}")) {
             return ExternalCache::fetch($vs_cache_key, "SimpleAPI_{$ps_endpoint}");
         }
     }
     $va_endpoint_config = self::getEndpointConfig($ps_endpoint);
     // throws exception if it can't be found
     switch ($va_endpoint_config['type']) {
         case 'search':
             $vm_return = self::runSearchEndpoint($va_endpoint_config, $po_request);
             break;
         case 'detail':
         default:
             $vm_return = self::runDetailEndpoint($va_endpoint_config, $po_request);
             break;
     }
     $vn_ttl = defined('__CA_SERVICE_API_CACHE_TTL__') ? __CA_SERVICE_API_CACHE_TTL__ : 60 * 60;
     // save for an hour by default
     ExternalCache::save($vs_cache_key, $vm_return, "SimpleAPI_{$ps_endpoint}", $vn_ttl);
     return $vm_return;
 }