public getInterceptorParams ( Phalcon\Mvc\DispatcherInterface $dispatcher ) : array | ||
$dispatcher | Phalcon\Mvc\DispatcherInterface | |
return | array |
public function getInterceptorParams(DispatcherInterface $dispatcher)
{
$interceptorConfig = strtolower($dispatcher->getParam(self::INTERCEPTOR_KEY));
if (!$interceptorConfig) {
return array();
}
parse_str($interceptorConfig, $interceptorParams);
//Make default
$interceptorParams = array_merge(array('lifetime' => 0, 'methods' => 'get', 'ignore_query_keys' => '_', 'jsonp_callback_key' => 'callback', 'format' => 'text', 'cors_enabled' => false), $interceptorParams);
$lifetime = $interceptorParams['lifetime'] = (int) $interceptorParams['lifetime'];
if ($lifetime <= 0) {
return array();
}
$methodsAllow = $interceptorParams['methods'] ? explode('|', $interceptorParams['methods']) : array('get');
$interceptorParams['methods'] = $methodsAllow;
$ignoreQueryKeys = $interceptorParams['ignore_query_keys'] ? explode('|', $interceptorParams['ignore_query_keys']) : array();
$interceptorParams['ignore_query_keys'] = $ignoreQueryKeys;
$interceptorParams['cors_enabled'] = (bool) $interceptorParams['cors_enabled'];
return $interceptorParams;
}
public function testDispatcherParams() { $dispatcher = new Dispatcher(); $interceptor = new DispatchInterceptor(); $this->assertEquals($interceptor->getInterceptorParams($dispatcher), array()); $dispatcher = new Dispatcher(); $dispatcher->setParams(array('_dispatch_cache' => 'lifetime=-1')); $this->assertEquals($interceptor->getInterceptorParams($dispatcher), array()); $dispatcher = new Dispatcher(); $dispatcher->setParams(array('_dispatch_cache' => 'lifetime=60')); $this->assertEquals($interceptor->getInterceptorParams($dispatcher), array('lifetime' => 60, 'methods' => array('get'), 'ignore_query_keys' => array('_'), 'jsonp_callback_key' => 'callback', 'format' => 'text')); $dispatcher = new Dispatcher(); $dispatcher->setParams(array('_dispatch_cache' => 'lifetime=100&methods=get|post&ignore_query_keys=api_key|_&jsonp_callback_key=callback&format=jsonp')); $this->assertEquals($interceptor->getInterceptorParams($dispatcher), array('lifetime' => 100, 'methods' => array('get', 'post'), 'ignore_query_keys' => array('api_key', '_'), 'jsonp_callback_key' => 'callback', 'format' => 'jsonp')); }