public function beforeDispatch(Event $event)
{
$request = $event->data['request'];
$response = $event->data['response'];
$config = $this->_getConfig();
$production = !Configure::read('debug');
if ($production && !$config->general('alwaysEnableController')) {
return null;
}
// Make sure the request looks like an asset.
$targetName = $this->getName($config, $request->url);
if (!$targetName) {
return null;
}
if (isset($request->query['theme'])) {
$config->theme($request->query['theme']);
}
$factory = new Factory($config);
$assets = $factory->assetCollection();
if (!$assets->contains($targetName)) {
return null;
}
$build = $assets->get($targetName);
try {
$compiler = $factory->cachedCompiler();
$contents = $compiler->generate($build);
} catch (Exception $e) {
throw new NotFoundException($e->getMessage());
}
$response->type($build->ext());
$response->body($contents);
$event->stopPropagation();
return $response;
}