- Модуль: ml
- Путь к файлу: ~/bitrix/modules/ml/lib/client.php
- Класс: BitrixMlClient
- Вызов: Client::performRequest
protected function performRequest($action, array $parameters)
{
$result = new Result();
$httpClient = new HttpClient([
"socketTimeout" => 10,
"streamTimeout" => 30,
"disableSslVerification" => true
]);
$url = $this->serverAddress . "/api/?action=".$action;
$request = [
"action" => $action,
"serializedParameters" => base64_encode(gzencode(Json::encode($parameters))),
];
//$request += $parameters;
$request["BX_TYPE"] = static::getPortalType();
$request["BX_LICENCE"] = static::getLicenseCode();
$request["SERVER_NAME"] = static::getServerName();
$request["BX_HASH"] = static::signRequest($request);
$queryResult = $httpClient->query(HttpClient::HTTP_POST, $url, $request);
if(!$queryResult)
{
$errors = $httpClient->getError();
foreach ($errors as $code => $message)
{
$result->addError(new Error($message, $code));
}
return $result;
}
$returnCode = $httpClient->getStatus();
if($returnCode != 200)
{
$result->addError(new Error("Server returned " . $returnCode . " code", "WRONG_SERVER_RESPONSE"));
return $result;
}
$response = $httpClient->getResult();
if($response == "")
{
$result->addError(new Error("Empty server response", "EMPTY_SERVER_RESPONSE"));
return $result;
}
try
{
$parsedResponse = Json::decode($response);
}
catch (Exception $e)
{
$result->addError(new Error("Could not parse server response. Raw response: " . $response));
return $result;
}
if($parsedResponse["status"] === "error")
{
foreach ($parsedResponse["errors"] as $error)
{
$result->addError(new Error($error["message"], $error["code"], $error["customData"]));
}
}
else if(is_array($parsedResponse["data"]))
{
$result->setData($parsedResponse["data"]);
}
return $result;
}