Beispiel #1
0
 /**
  * @param RpcRequestInterface $request
  * @return RpcResponseInterface
  */
 public function call(RpcRequestInterface $request)
 {
     $this->getDispatcher()->dispatch(Events::RPC_REQUEST, new RpcRequestEvent($request));
     $protocol = $this->getProtocol($request->getProtocol());
     $httpRequest = $protocol->createHttpRequest($request);
     $this->getDispatcher()->dispatch(Events::HTTP_REQUEST, new HttpRequestEvent($httpRequest));
     $httpResponse = $this->getTransport()->call($httpRequest);
     $this->getDispatcher()->dispatch(Events::HTTP_RESPONSE, new HttpResponseEvent($httpRequest, $httpResponse));
     $response = $protocol->createRpcResponse($httpResponse);
     $this->getDispatcher()->dispatch(Events::RPC_RESPONSE, new RpcResponseEvent($request, $response));
     return $response;
 }
Beispiel #2
0
 /**
  * @param RpcRequestInterface $request
  * @return HttpRequestInterface
  */
 public function createHttpRequest(RpcRequestInterface $request)
 {
     $data = ['jsonrpc' => '2.0', 'method' => $request->getMethod(), 'params' => $request->getParams(), 'id' => uniqid('', true)];
     $body = @json_encode($data);
     if (!$body) {
         throw new InvalidArgumentException('Invalid request data.');
     }
     $httpRequest = new HttpRequest();
     $httpRequest->setHeaders($request->getHeaders());
     $httpRequest->setHeader('Content-Type', 'application/json');
     $httpRequest->setUrl($request->getUrl());
     $httpRequest->setBody($body);
     return $httpRequest;
 }