Beispiel #1
0
 /**
  * Handle the given request
  *
  * @param \React\Http\Request  $request
  * @param \React\Http\Response $response
  */
 public function handle($request, $response)
 {
     try {
         $serverAction = RequestInfoFactory::getServerActionForRequest($request);
         if ($serverAction) {
             // Handle a very special server action
             $this->handleServerAction($serverAction, $request, $response);
             return;
         }
         $delayedRequest = FALSE;
         $handler = $this->getHandlerForRequest($request);
         $requestInfo = RequestInfoFactory::buildRequestInfoFromRequest($request);
         $specialHandlerAction = RequestInfoFactory::getHandlerActionForRequest($request);
         $requestResult = FALSE;
         if ($specialHandlerAction) {
             // Handle a special handler action
             $requestResult = call_user_func(array($handler, $specialHandlerAction), $requestInfo);
         } else {
             if (!$requestInfo->getDatabaseIdentifier()) {
                 // Show the welcome message
                 $requestResult = $handler->noRoute($requestInfo);
             } else {
                 // Run normal methods
                 $method = $request->getMethod();
                 switch ($method) {
                     case 'POST':
                     case 'PUT':
                         $delayedRequest = TRUE;
                         $this->waitForBodyAndPerformAction($request, $response, $requestInfo);
                         break;
                     case 'GET':
                         $requestResult = $handler->read($requestInfo);
                         break;
                     case 'DELETE':
                         $requestResult = $handler->delete($requestInfo);
                         break;
                     default:
                         $requestResult = new HandlerResult(405, new InvalidRequestMethodException(sprintf('Request method "%s" not valid', $method)), 1413033763);
                 }
             }
         }
         if (!$delayedRequest) {
             $this->handleResult($requestResult, $request, $response);
         }
     } catch (LogicException $exception) {
         $this->handleError($exception, $request, $response);
     } catch (RuntimeException $exception) {
         $this->handleError($exception, $request, $response);
     } catch (\Exception $exception) {
         $this->writeln('Caught exception #%d: %s', $exception->getCode(), $exception->getMessage());
         $this->writeln($exception->getTraceAsString());
     }
 }
Beispiel #2
0
 /**
  * @test
  */
 public function getServerActionForRequestTest()
 {
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('GET', '/_restart')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('GET', '/_restart/')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('GET', '/_restart/something')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('HEAD', '/_restart')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('HEAD', '/_restart/')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('HEAD', '/_restart/something')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('PUT', '/_restart')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('PUT', '/_restart/')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('PUT', '/_restart/something')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('DELETE', '/_restart')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('DELETE', '/_restart/')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('DELETE', '/_restart/something')));
     $this->assertEquals('restart', RequestInfoFactory::getServerActionForRequest(new Request('POST', '/_restart')));
     $this->assertEquals('restart', RequestInfoFactory::getServerActionForRequest(new Request('POST', '/_restart/')));
     $this->assertEquals('restart', RequestInfoFactory::getServerActionForRequest(new Request('POST', '/_restart/something')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('GET', '/_shutdown')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('GET', '/_shutdown/')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('GET', '/_shutdown/something')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('HEAD', '/_shutdown')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('HEAD', '/_shutdown/')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('HEAD', '/_shutdown/something')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('PUT', '/_shutdown')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('PUT', '/_shutdown/')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('PUT', '/_shutdown/something')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('DELETE', '/_shutdown')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('DELETE', '/_shutdown/')));
     $this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('DELETE', '/_shutdown/something')));
     $this->assertEquals('shutdown', RequestInfoFactory::getServerActionForRequest(new Request('POST', '/_shutdown')));
     $this->assertEquals('shutdown', RequestInfoFactory::getServerActionForRequest(new Request('POST', '/_shutdown/')));
     $this->assertEquals('shutdown', RequestInfoFactory::getServerActionForRequest(new Request('POST', '/_shutdown/something')));
     //		$this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('GET', '/_stop')));
     //		$this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('GET', '/_stop/')));
     //		$this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('GET', '/_stop/something')));
     //
     //		$this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('HEAD', '/_stop')));
     //		$this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('HEAD', '/_stop/')));
     //		$this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('HEAD', '/_stop/something')));
     //
     //		$this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('PUT', '/_stop')));
     //		$this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('PUT', '/_stop/')));
     //		$this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('PUT', '/_stop/something')));
     //
     //		$this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('DELETE', '/_stop')));
     //		$this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('DELETE', '/_stop/')));
     //		$this->assertFalse(RequestInfoFactory::getServerActionForRequest(new Request('DELETE', '/_stop/something')));
     //
     //		$this->assertEquals('stop', RequestInfoFactory::getServerActionForRequest(new Request('POST', '/_stop')));
     //		$this->assertEquals('stop', RequestInfoFactory::getServerActionForRequest(new Request('POST', '/_stop/')));
     //		$this->assertEquals('stop', RequestInfoFactory::getServerActionForRequest(new Request('POST', '/_stop/something')));
 }