- Модуль: clouds
- Путь к файлу: ~/bitrix/modules/clouds/classes/general/storage_service_rackspace.php
- Класс: CCloudStorageService_RackSpaceCloudFiles
- Вызов: CCloudStorageService_RackSpaceCloudFiles::GetFileSRC
function GetFileSRC($arBucket, $arFile, $encoded = true)
{
global $APPLICATION;
if ($arBucket["SETTINGS"]["FORCE_HTTP"] === "Y")
$proto = "http";
else
$proto = ($APPLICATION->IsHTTPS()? "https": "http");
if($arBucket["CNAME"])
{
$host = $proto."://".$arBucket["CNAME"];
}
else
{
$result = false;
$cache_id = md5(serialize($arBucket));
$obCache = new CPHPCache;
if($obCache->InitCache(3600, $cache_id, "/"))
{
$result = $obCache->GetVars();
}
else
{
$this->SendCDNRequest(
$arBucket["SETTINGS"],
"HEAD",
$arBucket["BUCKET"]
);
if($this->status == 204)
{
$result = array();
foreach($this->headers as $key => $value)
$result[mb_strtolower($key)] = $value;
}
}
if($obCache->StartDataCache())
$obCache->EndDataCache($result);
if(is_array($result))
$host = $result["x-cdn-uri"];
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;
}
}