/**
  * @param \Janeiro\Request\AbstractRequest $request
  * @throws \Janeiro\Exception
  * @return \Janeiro\Response
  */
 public function indexAction(AbstractRequest $request)
 {
     $response = null;
     if (1 === preg_match('/^[\\/A-Za-z]+$/', $request->getParameter('uri'), $uri)) {
         $namespaces = (array) $this->registry->get('routing.namespace');
         $segments = explode('/', $uri[0]);
         $file = array_pop($segments) . '.js';
         foreach ($namespaces as $namespace) {
             $path = [ROOT, 'src', str_replace("\\", DS, $namespace), $segments[0], 'View', 'JavaScript'];
             $path = implode(DS, array_merge($path, array_slice($segments, 1)));
             if (is_readable($path . DS . $file)) {
                 $this->view->setTemplateDirectory($path);
                 $this->view->setTemplate($file);
                 $response = new Response('text/javascript');
                 $response->setHeader('Expires', 'Wed, 01 Jan 2014 00:00:00 GMT');
                 $response->setHeader('Cache-Control', 'no-store, no-cache, must-revalidate');
                 $response->setHeader('Pragma', 'no-cache');
                 $response->setContent($this->view->render());
                 $response->setStatus(200);
                 break;
             }
         }
     }
     if (empty($response)) {
         throw new Exception('Resource not found', Exception::HTTP_NOT_FOUND);
     }
     return $response;
 }
Example #2
0
 /**
  * @expectedException \Janeiro\Mvc\Exception
  * @expectedExceptionMessage Could not create view from template "Bar"
  */
 public function testExceptionThrownWhenTemplateDoesNotExist()
 {
     $this->view->setTemplate('Bar');
     $this->view->setTemplateDirectory('Foo');
     $this->view->render();
 }