- Модуль: clouds
- Путь к файлу: ~/bitrix/modules/clouds/classes/general/storage_service_openstack.php
- Класс: CCloudStorageService_OpenStackStorage
- Вызов: CCloudStorageService_OpenStackStorage::SendRequest
function SendRequest($settings, $verb, $bucket, $file_name='', $params='', $content=false, $additional_headers=array())
{
$arToken = $this->_GetToken($settings["HOST"], $settings["USER"], $settings["KEY"]);
if(!$arToken)
return false;
$request = new BitrixMainWebHttpClient(array(
"redirect" => false,
"streamTimeout" => $this->streamTimeout,
));
if (isset($additional_headers["option-file-result"]))
{
$request->setOutputStream($additional_headers["option-file-result"]);
}
$RequestURI = $file_name;
$ContentType = "N";
$request->setHeader("X-Auth-Token", $arToken["X-Auth-Token"]);
foreach($additional_headers as $key => $value)
{
if($key == "Content-Type")
$ContentType = $value;
else
$request->setHeader($key, $value);
}
$this->status = 0;
$this->host = $arToken["X-Storage-Host"];
$this->port = $arToken["X-Storage-Port"];
$this->verb = $verb;
$this->url = rtrim($arToken["X-Storage-Url"], "/")."/".$bucket.$RequestURI.$params;
$this->headers = array();
$this->errno = 0;
$this->errstr = '';
$this->result = '';
$logRequest = false;
if (defined("BX_CLOUDS_TRACE") && $verb !== "GET" && $verb !== "HEAD")
{
$stime = microtime(1);
$logRequest = array(
"request_id" => md5((string)mt_rand()),
"portal" => $_SERVER["HTTP_HOST"],
"verb" => $this->verb,
"url" => $this->url,
);
AddMessage2Log(json_encode($logRequest), 'clouds', 20);
}
$request->setHeader("Content-type", $ContentType);
$request->query($this->verb, $this->url, $content);
$this->status = $request->getStatus();
foreach($request->getHeaders() as $key => $value)
{
$this->headers[$key] = is_array($value) ? $value[0] : $value;
}
$this->errstr = implode("n", $request->getError());
$this->errno = $this->errstr? 255: 0;
$this->result = $request->getResult();
if ($logRequest)
{
$logRequest["status"] = $this->status;
$logRequest["time"] = round(microtime(true) - $stime, 6);
$logRequest["headers"] = $this->headers;
AddMessage2Log(json_encode($logRequest), 'clouds', 0);
}
return $request;
}