예제 #1
0
 /**
  * @param Request $Request
  * @return Response
  */
 public function handleRequest(Request $Request)
 {
     if (is_null($Request->getId())) {
         return $this->handleNotification($Request);
     }
     try {
         $result = $this->invokeRequest($Request);
         return new SuccessResponse($Request->getId(), $result);
     } catch (MethodNotFound $Exception) {
         return ErrorResponse::methodNotFound($Request->getId());
     } catch (TooManyParameters $Exception) {
         return ErrorResponse::invalidParameters($Request->getId(), 'Too many parameters');
     } catch (InvalidParameter $Exception) {
         return ErrorResponse::invalidParameters($Request->getId(), $Exception->getMessage() ?: null);
     } catch (MissingParameter $Exception) {
         return ErrorResponse::invalidParameters($Request->getId(), $Exception->getMessage() ?: null);
     }
 }
예제 #2
0
 public function testThatWithIdDoesNotChangeRequest()
 {
     $Request = new Request('foo');
     $this->assertSame('foo', $Request->getMethod());
     $this->assertSame([], $Request->getParams());
     $this->assertNull($Request->getId());
     $OtherRequest = $Request->withId(123);
     $this->assertSame('foo', $Request->getMethod());
     $this->assertSame([], $Request->getParams());
     $this->assertNull($Request->getId());
     $this->assertSame('foo', $OtherRequest->getMethod());
     $this->assertSame([], $OtherRequest->getParams());
     $this->assertSame(123, $OtherRequest->getId());
 }