• Модуль: 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;
	}
}