Example #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());
     }
 }
Example #2
0
 /**
  * @test
  */
 public function getHandlerActionForRequestTest()
 {
     $this->assertEquals('getStatsAction', RequestInfoFactory::getHandlerActionForRequest(new Request('GET', '/_stats')));
     $this->assertEquals('getStatsAction', RequestInfoFactory::getHandlerActionForRequest(new Request('GET', '/_stats/')));
     $this->assertEquals('getStatsAction', RequestInfoFactory::getHandlerActionForRequest(new Request('GET', '/_stats/something')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('POST', '/_stats')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('POST', '/_stats/')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('POST', '/_stats/something')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('PUT', '/_stats')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('PUT', '/_stats/')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('PUT', '/_stats/something')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('DELETE', '/_stats')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('DELETE', '/_stats/')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('DELETE', '/_stats/something')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('HEAD', '/_stats')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('HEAD', '/_stats/')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('HEAD', '/_stats/something')));
     $this->assertEquals('getAllDbsAction', RequestInfoFactory::getHandlerActionForRequest(new Request('GET', '/_all_dbs')));
     $this->assertEquals('getAllDbsAction', RequestInfoFactory::getHandlerActionForRequest(new Request('GET', '/_all_dbs/')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('POST', '/_all_dbs')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('POST', '/_all_dbs/')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('PUT', '/_all_dbs')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('PUT', '/_all_dbs/')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('DELETE', '/_all_dbs')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('DELETE', '/_all_dbs/')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('HEAD', '/_all_dbs')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('HEAD', '/_all_dbs/')));
     //		$this->assertEquals('postRestartAction', RequestInfoFactory::getHandlerActionForRequest(new Request('POST', '/_restart')));
     //		$this->assertEquals('postRestartAction', RequestInfoFactory::getHandlerActionForRequest(new Request('POST', '/_restart/')));
     //		$this->assertEquals('postRestartAction', RequestInfoFactory::getHandlerActionForRequest(new Request('POST', '/_restart/something')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('POST', '/_restart')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('POST', '/_restart/')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('POST', '/_restart/something')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('GET', '/_restart')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('GET', '/_restart/')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('GET', '/_restart/something')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('PUT', '/_restart')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('PUT', '/_restart/')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('PUT', '/_restart/something')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('DELETE', '/_restart')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('DELETE', '/_restart/')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('DELETE', '/_restart/something')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('HEAD', '/_restart')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('HEAD', '/_restart/')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('HEAD', '/_restart/something')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('POST', '/restart')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('POST', '/restart/')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('POST', '/restart/something')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('GET', '/restart')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('GET', '/restart/')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('GET', '/restart/something')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('PUT', '/restart')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('PUT', '/restart/')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('PUT', '/restart/something')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('DELETE', '/restart')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('DELETE', '/restart/')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('DELETE', '/restart/something')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('HEAD', '/restart')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('HEAD', '/restart/')));
     $this->assertFalse(RequestInfoFactory::getHandlerActionForRequest(new Request('HEAD', '/restart/something')));
 }
Example #3
0
 /**
  * @test
  */
 public function getStatsActionTest()
 {
     $requestInfo = RequestInfoFactory::buildRequestInfoFromRequest(new Request('GET', '/_stats/'));
     $handlerResult = $this->fixture->getStatsAction($requestInfo);
     $this->assertInstanceOf('Cundd\\PersistentObjectStore\\Server\\Handler\\HandlerResultInterface', $handlerResult);
 }