Пример #1
0
 /**
  * Create RPC response object from HTTP response object.
  *
  * @param Request    $request
  * @param RpcRequest $rpcRequest
  * @param mixed      $result
  *
  * @throws RpcException
  *
  * @return RpcResponse|RpcXResponse
  */
 public function createFrom(Request $request, RpcRequest $rpcRequest = null, $result)
 {
     $requestType = $request->headers->get('Content-Type');
     $responseType = $request->headers->get('Accept');
     if (!$this->validate($requestType) or !$this->validate($responseType)) {
         throw new RpcException('Invalid protocol or encoding');
     }
     list($protocol, $encoding) = $this->getContentType($requestType);
     $rpcResponse = $this->create($protocol);
     if ($rpcRequest !== null) {
         $rpcResponse->setVersion($rpcRequest->getVersion());
         $rpcResponse->setId($rpcRequest->getId());
     }
     if ($result instanceof \Exception) {
         $error = new Error();
         $error->setCode($result->getCode());
         $error->setMessage($result->getMessage());
         $error->setData($result->getTraceAsString());
         $rpcResponse->setError($error);
         return $rpcResponse;
     }
     $rpcResponse->setResult($result);
     return $rpcResponse;
 }