Example #1
0
 /**
  *
  * @param Request $request
  * @param Response $response
  */
 public function render(Request $request, Response $response)
 {
     if ($this->environment->getName() !== 'test') {
         header('HTTP/1.1 ' . $response->getStatusCode() . ' ' . $response->getStatusMessage());
         foreach ($response->getHeaders() as $name => $value) {
             header($name . ': ' . $value);
         }
     }
     echo (string) $response->getContent();
 }
 /**
  * {@inheritdoc}
  */
 public function execute(\Exception $exception)
 {
     error_log($exception->getMessage() . " " . $exception->getFile() . "(" . $exception->getLine() . ")");
     if (!$this->environment->isDebug()) {
         return;
     }
     $presenter = new HTTPErrorPresenter($this->environment);
     $response = new Response();
     $response->setContent($exception);
     $request = new EmptyRequest('', null);
     $presenter->render($request, $response);
 }
Example #3
0
 /**
  *
  * @param Response $response
  */
 private function setHeaders(Response $response)
 {
     if ($this->environment->getName() === 'test') {
         return;
     }
     header('HTTP/1.1 ' . $response->getStatusCode() . ' ' . $response->getStatusMessage());
     header('Content-type: application/json');
     foreach ($response->getHeaders() as $name => $value) {
         if ($name != 'content-type') {
             header($name . ': ' . $value);
         }
     }
 }
Example #4
0
 /**
  * @param Request $request
  * @param Response $response
  */
 public function render(Request $request, Response $response)
 {
     if (!$this->environment->isSilent()) {
         header('HTTP/1.1 ' . $response->getStatusCode() . ' ' . $response->getStatusMessage());
         foreach ($response->getHeaders() as $name => $value) {
             header($name . ': ' . $value);
         }
     }
     if ($response->getStatusCode() < 299) {
         $startRange = 0;
         $endRange = filesize($response->getContent()) - 1;
         try {
             $contentRange = $response->getHeader('Content-Range');
             if (preg_match('/^bytes ([0-9]+)-([0-9]+)\\/([0-9]+)$/', $contentRange, $match)) {
                 $startRange = (int) $match[1];
                 $endRange = (int) $match[2];
             }
         } catch (HeaderNotFoundException $e) {
             //skipp
         }
         $buffer = 1024 * 8;
         $file = @fopen($response->getContent(), 'rb');
         fseek($file, $startRange);
         while (!feof($file) && ($p = ftell($file)) <= $endRange) {
             if ($p + $buffer > $endRange) {
                 $buffer = $endRange - $p + 1;
             }
             set_time_limit(0);
             echo fread($file, $buffer);
             flush();
         }
         fclose($file);
     }
 }
Example #5
0
 /**
  * {@inheritdoc}
  */
 public function execute(\Exception $exception)
 {
     if (!$this->dependencyInjection->get('environment')->isSilent()) {
         error_log($exception->getMessage() . " " . $exception->getFile() . "(" . $exception->getLine() . ")");
     }
     $presenter = $this->getPresenter($this->request->getUrl());
     $response = new Response();
     $response->setStatusCode(500);
     $response->setContent($exception);
     if ($exception instanceof HTTPException) {
         $response->setStatusCode($exception->getStatusCode());
     }
     $event = new ExecutePresenterEvent($this->request, $response);
     $this->dependencyInjection->get('eventManager')->fire('executePresenter', $event);
     $presenter->render($this->request, $response);
 }
Example #6
0
 /**
  * Support status code 4XX-5XX.
  *
  * @param Request $request
  * @param Response $response
  */
 private function displayError(Request $request, Response $response)
 {
     $exception = $response->getContent();
     $data = array('statusCode' => $response->getStatusCode(), 'message' => $exception->getMessage(), 'exception' => get_class($exception), 'file' => $exception->getFile(), 'line' => $exception->getLine());
     if ($this->environment->isDebug()) {
         echo $this->twig->render('error.twig', $data);
     } else {
         echo $this->twig->render($response->getStatusCode() . '.twig');
     }
 }
Example #7
0
 /**
  * Check authenticate.
  *
  * @param string $redirect
  * @param Request $request
  * @return Response
  */
 private function createResponseRedirect($redirect, Request $request)
 {
     $response = new Response();
     if ($request->isAjax()) {
         $response->setStatusCode(401);
         $response->setHeader('X-Location', $redirect);
     } else {
         $response->redirect($redirect);
     }
     return $response;
 }
Example #8
0
 /**
  * @return Response
  * @throws ActionNotFoundException
  */
 private function invokeController()
 {
     $eventManager = $this->container->getEventManager();
     $controller = new $this->className($this->request, $this->container);
     if (!is_callable([$controller, $this->methodName])) {
         throw new ActionNotFoundException($this->className, $this->methodName);
     }
     $response = null;
     $controllerData = call_user_func_array([$controller, $this->methodName], $this->request->getArguments());
     if ($controllerData instanceof Response) {
         $response = $controllerData;
     } else {
         $response = new Response();
         $response->setContent($controllerData);
     }
     if (!$response->getPresenter()) {
         $response->setPresenter($this->getPresenter());
     }
     $event = new ExecutedActionEvent($this->request, $response);
     $eventManager->fire('executedAction', $event);
     return $response;
 }