/** * Create a new SoapException. */ public function __construct(\SoapFault $fault, \SoapClient $client) { $message = $fault->getMessage(); $code = $fault->getCode(); if ($message === "UPnPError") { $code = $fault->detail->UPnPError->errorCode; $message .= ": {$code}"; } parent::__construct($message, $code); $this->client = $client; }
/** * @param \SoapFault $fault * * @return WebserviceException * @throws ServerException */ public function convertToException($fault) { $errorClassName = isset($fault->{'detail'}->{'errorcode'}) ? $fault->{'detail'}->{'errorcode'} : 'Server'; $errorClassFQ = 'WebservicesNl\\Common\\Exception\\' . str_replace('.', '\\', $errorClassName) . 'Exception'; // should we throw an error about throwing an error? or just create a default error? if (!class_exists($errorClassFQ)) { throw new ServerException("Could not convert errorCode: '{$errorClassName}'"); } /** @var WebserviceException $exception */ return new $errorClassFQ($fault->getMessage(), $fault->getCode()); }
/** * {@inheritdoc} */ public function handle(\SoapFault $e) { $message = trim($e->getMessage()); foreach ($this->classes as $class) { $results = array(); if (preg_match('`' . str_replace('%s', '(.*?)', $class::MESSAGE) . '`is', $message, $results)) { $rc = new \ReflectionClass($class); unset($results[0]); throw $rc->newInstanceArgs($results); } } throw new ClientException($message, $e->getCode(), $e); }
/** * Raise a soft error event which * will save errorto database. * * @param string $companySymbol * @param \Exception|\SoapFault $exception * @param $message */ protected function raiseEvent($companySymbol, $exception, $message) { event(new SoftSoapErrorRaised($companySymbol, $exception->getCode(), $message, $exception->getTraceAsString())); }
/** * @param AbstractModel|AbstractModel[]|\SoapFault $result * @throws InvalidArgument * @return $this; */ public function setResult($result) { if ($result instanceof \SoapFault) { $this->setIsSoapFault(true); $this->setErrorCode($result->getCode()); $this->setErrorMsg(SoapClientFactory::convertEncoding($result->getMessage())); $this->result = null; $this->setSoapFault($result); } else { $piece = $result; if (is_array($result)) { if (count($result)) { $piece = reset($result); } else { $piece = null; } } if ($piece !== null && !$piece instanceof AbstractModel && !$piece instanceof \SoapFault) { throw new InvalidArgument('O resultado deve ser uma instância de PhpSigep\\Model\\AbstractModel ou um ' . 'array de PhpSigep\\Model\\AbstractModel ou uma instância de \\SoapFault.'); } $this->result = $result; } return $this; }
private function createException(\SoapFault $e) { return new IOException($e->getMessage(), $e->getCode(), $e); }