- Модуль: clouds
- Путь к файлу: ~/bitrix/modules/clouds/classes/general/storage_service_openstack.php
- Класс: CCloudStorageService_OpenStackStorage
- Вызов: CCloudStorageService_OpenStackStorage::GetFileSRC
function GetFileSRC($arBucket, $arFile, $encoded = true)
{
global $APPLICATION;
$forceHttp = $arBucket["SETTINGS"]["FORCE_HTTP"] ?? 'N';
if ($forceHttp === "Y")
$proto = "http";
else
$proto = ($APPLICATION->IsHTTPS()? "https": "http");
if($arBucket["CNAME"])
{
$host = $proto."://".$arBucket["CNAME"];
}
else
{
$arToken = $this->_GetToken(
$arBucket["SETTINGS"]["HOST"],
$arBucket["SETTINGS"]["USER"],
$arBucket["SETTINGS"]["KEY"]
);
if(is_array($arToken))
{
if ($arToken["X-Storage-NoProtoUrl"])
$host = $proto."://".$arToken["X-Storage-NoProtoUrl"]."/".$arBucket["BUCKET"];
else
$host = $arToken["X-Storage-Url"]."/".$arBucket["BUCKET"];
}
else
{
return "/404.php";
}
}
if(is_array($arFile))
$URI = ltrim($arFile["SUBDIR"]."/".$arFile["FILE_NAME"], "/");
else
$URI = ltrim($arFile, "/");
if($arBucket["PREFIX"])
{
if(mb_substr($URI, 0, mb_strlen($arBucket["PREFIX"]) + 1) !== $arBucket["PREFIX"]."/")
$URI = $arBucket["PREFIX"]."/".$URI;
}
if ($encoded)
{
return $host."/".CCloudUtil::URLEncode($URI, "UTF-8", true);
}
else
{
return $host."/".$URI;
}
}