/** * @param RequestInterface $request * @param string $endpoint * * @return RpcResponseInterface * @throws \Exception */ protected function getResponse(RequestInterface $request, $endpoint) { $request->getAttributes()->set('_endpoint', $endpoint); try { $rpcResponse = $this->handleSingleRequest($request); } catch (\Exception $e) { $rpcResponse = $this->handleException($e, $request); } return $rpcResponse; }
/** * Checks that argument matches parameter type * * @param mixed $argument * @param \ReflectionParameter $param * @param RequestInterface $request * * @return mixed */ private function checkType($argument, \ReflectionParameter $param, RequestInterface $request) { $actual = is_object($argument) ? get_class($argument) : gettype($argument); if (null !== $param->getClass()) { $className = $param->getClass(); if (!$argument instanceof $className) { throw InvalidMethodParametersException::typeMismatch($request->getMethod(), $param->name, $className, $actual); } } elseif ($param->isArray() && !is_array($argument)) { throw InvalidMethodParametersException::typeMismatch($request->getMethod(), $param->name, 'array', $actual); } return $argument; }