Example #1
0
 /**
  * @param string            $method
  * @param RequestInterface  $params
  *
  * @return ResultInterface
  * @throws SoapFault
  */
 protected function call($method, RequestInterface $request)
 {
     $requestEvent = new Event\RequestEvent($this, $method, $request);
     $this->dispatcher->dispatch(Events::REQUEST, $requestEvent);
     try {
         $arguments = $request instanceof MultiArgumentRequestInterface ? $request->getArguments() : [$request];
         $result = call_user_func_array([$this->soapClient, $method], $arguments);
         if ($result instanceof ResultProviderInterface) {
             $result = $result->getResult();
         }
         if (!$result instanceof ResultInterface) {
             $result = new MixedResult($result);
         }
     } catch (SoapFault $soapFault) {
         $this->dispatcher->dispatch(Events::FAULT, new Event\FaultEvent($this, $soapFault, $requestEvent));
         throw $soapFault;
     }
     $this->dispatcher->dispatch(Events::RESPONSE, new Event\ResponseEvent($this, $requestEvent, $result));
     return $result;
 }