/** * @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); } }
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()); }