/** * @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; }
/** * @param RequestInterface $request * @param \ReflectionParameter[] $parameters * * @return array * @throws \RuntimeException */ protected function doGetArguments(RequestInterface $request, array $parameters) { $attributes = $request->getAttributes()->all(); $arguments = []; $missing = []; foreach ($parameters as $param) { if (is_array($request->getParameters()) && array_key_exists($param->name, $request->getParameters())) { $arguments[] = $this->checkType($request->getParameters()[$param->name], $param, $request); } elseif (array_key_exists($param->name, $attributes)) { $arguments[] = $this->checkType($attributes[$param->name], $param->name, $request); } elseif ($param->getClass() && $param->getClass()->isInstance($request)) { $arguments[] = $request; } elseif ($param->isDefaultValueAvailable()) { $arguments[] = $param->getDefaultValue(); } else { $missing[] = $param->name; } } if (count($missing) > 0) { throw InvalidMethodParametersException::missing($request->getMethod(), $missing); } return $arguments; }