public static function commit(\Symfony\Component\HttpFoundation\Request $request, \Symfony\Component\HttpFoundation\Response $response, \Serphlet\Config\ServletContext $context)
 {
     // Determine the type
     $statusCode = $response->getStatus();
     $exception = $request->getAttribute(\Serphlet\Globals::EXCEPTION_ATTR);
     // Consider only getting involved if the response is marked as an error
     if (!$response->isError()) {
         return;
     }
     // Handle the status
     if (!$response->isCommitted()) {
         $response->resetBuffer();
         if ($statusCode >= 400) {
             $request->setAttribute(\Serphlet\Globals::EXCEPTION_PAGE_ATTR, $request->getRequestURI());
             $request->setAttribute(\Serphlet\Globals::STATUS_CODE_ATTR, $statusCode);
             $errorMessage = $request->getAttribute(\Serphlet\Globals::ERROR_MESSAGE_ATTR);
             if (!trim($errorMessage)) {
                 $request->setAttribute(\Serphlet\Globals::ERROR_MESSAGE_ATTR, $response->getMessage());
             }
             $errorPage = $context->findErrorPage($statusCode);
             if (!empty($errorPage)) {
                 self::serveErrorPage($request, $response, $context, $errorPage);
             } else {
                 self::serveDefaultErrorPage($request, $response, $context);
             }
         } else {
             // Errors below this status don't have response contents
         }
     }
 }
 public function __invoke(Request $request)
 {
     if ($this->service->delete($request->getRequestURI()) === false) {
         throw new ServiceUnavailableHttpException(null, "Failed to delete resource");
     }
     return Response::create("", Response::HTTP_NO_CONTENT);
 }
Example #3
0
 /**
  * Dispatch url
  *
  * @param string $request
  */
 public function dispatchUrl(Request $request)
 {
     $method = $request->getMethod();
     $requestUri = $request->getRequestURI();
     $uri = rawurldecode(parse_url($requestUri, PHP_URL_PATH));
     $routeInfo = $this->dispatcher->dispatch($method, $uri);
     return $routeInfo;
 }
Example #4
0
 private function _is_logged_in(Request $request, Response $response)
 {
     session_start();
     if (!session('user_id')) {
         session_destroy();
         $response->setStatusCode(302);
         $response->headers->set('Location', '/login?return_to=' . $request->getRequestURI());
         return false;
     } else {
         return true;
     }
 }
Example #5
0
 /**
  * Identify and return the path component (from the request URI) that
  * we will use to select a \Phruts\Config\ActionConfig to dispatch with.
  *
  * If no such path can be identified, create an error response
  * and return null.
  *
  * @param \Symfony\Component\HttpFoundation\Request $request The kernel request we are
  * processing
  * @param \Symfony\Component\HttpFoundation\Response $response The kernel response we are
  * creating
  * @return string
  */
 protected function processPath(\Symfony\Component\HttpFoundation\Request $request, \Symfony\Component\HttpFoundation\Response $response)
 {
     // For prefix matching, match on the path info (if any)
     $path = (string) $request->attributes->get(self::INCLUDE_PATH_INFO);
     if ($path == null) {
         $path = $request->getPathInfo();
     }
     // Always have a forward slash in the path
     if (substr($path, 0, 1) !== '/') {
         $path = '/' . $path;
     }
     // For extension matching, strip the module prefix and extension
     $prefix = $this->moduleConfig->getPrefix();
     if (!empty($prefix)) {
         if (!preg_match('#^/?' . $prefix . '/.*#', $path)) {
             $msg = $this->getInternal()->getMessage(null, "processPath", $request->getRequestURI());
             if (!empty($this->log)) {
                 $this->log->error($msg);
             }
             throw new BadRequestHttpException($msg);
         }
         // Strip module
         $path = preg_replace('#^/?' . $prefix . '#', '', $path);
     }
     return $path;
 }