/** * 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; }