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