• Модуль: pull
  • Путь к файлу: ~/bitrix/modules/pull/lib/jsonrpctransport.php
  • Класс: BitrixPullJsonRpcTransport
  • Вызов: JsonRpcTransport::executeMethod
static function executeMethod(string $method, array $params, array $options = []): MainResult
{
	$result = new MainResult();
	$rpcRequest = static::createJsonRpcRequest($method, $params);

	try
	{
		$body = MainWebJson::encode($rpcRequest);
	}
	catch (Throwable $e)
	{
		return $result->addError(new BitrixMainError($e->getMessage(), $e->getCode()));
	}
	$httpResult = static::performHttpRequest($body, $options);
	if (!$httpResult->isSuccess())
	{
		return $result->addErrors($httpResult->getErrors());
	}
	$response = $httpResult->getData();
	if (!isset($response['jsonrpc']) || $response['jsonrpc'] != static::VERSION)
	{
		return $result->addError(new BitrixMainError('Wrong response structure'));
	}
	if (is_array($response['error']))
	{
		return $result->addError(new BitrixMainError($response['error']['message'], $response['error']['code']));
	}

	return $result->setData($response);
}