/** * {@inheritdoc} */ public function applyResponse(HttpRequestInterface $request, HttpResponseInterface $response, array $options) { if ($response instanceof ResponseInterface && isset($options['rpc_error']) && true === $options['rpc_error'] && null !== $response->getRpcErrorCode()) { throw RequestException::create($request, $response); } return $response; }
/** * {@inheritdoc} */ public static function create(HttpRequestInterface $request, HttpResponseInterface $response = null, Exception $previous = null, array $handlerContext = null) { if ($request instanceof RequestInterface && $response instanceof ResponseInterface) { static $clientErrorCodes = [-32600, -32601, -32602, -32700]; $errorCode = $response->getRpcErrorCode(); if (in_array($errorCode, $clientErrorCodes)) { $label = 'Client RPC error response'; $className = __NAMESPACE__ . '\\ClientException'; } else { $label = 'Server RPC error response'; $className = __NAMESPACE__ . '\\ServerException'; } $message = $label . ' [uri] ' . $request->getRequestTarget() . ' [method] ' . $request->getRpcMethod() . ' [error code] ' . $errorCode . ' [error message] ' . $response->getRpcErrorMessage(); return new $className($message, $request, $response, $previous); } return parent::create($request, $response, $previous); }