コード例 #1
0
 /**
  * @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;
 }
コード例 #2
0
 /**
  * @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;
 }