• Модуль: clouds
  • Путь к файлу: ~/bitrix/modules/clouds/classes/general/security_service_s3.php
  • Класс: CCloudSecurityService_AmazonS3
  • Вызов: CCloudSecurityService_AmazonS3::GetFederationToken
function GetFederationToken($arBucket, $Policy, $Name, $DurationSeconds = 129600/*36h*/)
{
	global $APPLICATION;

	$response = $this->SendRequest(
		$arBucket["SETTINGS"]["ACCESS_KEY"],
		$arBucket["SETTINGS"]["SECRET_KEY"],
		'GET',
		$arBucket["BUCKET"],
		'/',
		array(
			'Action' => "GetFederationToken",
			'DurationSeconds' => intval($DurationSeconds),
			'Name' => $Name,
			'Policy' => $this->PHPToJSObject($Policy),
		)
	);

	if(
		is_array($response)
		&& isset($response["GetFederationTokenResponse"])
		&& is_array($response["GetFederationTokenResponse"])
		&& isset($response["GetFederationTokenResponse"]["#"])
		&& is_array($response["GetFederationTokenResponse"]["#"])
		&& isset($response["GetFederationTokenResponse"]["#"]["GetFederationTokenResult"])
		&& is_array($response["GetFederationTokenResponse"]["#"]["GetFederationTokenResult"])
		&& isset($response["GetFederationTokenResponse"]["#"]["GetFederationTokenResult"][0])
		&& is_array($response["GetFederationTokenResponse"]["#"]["GetFederationTokenResult"][0])
		&& isset($response["GetFederationTokenResponse"]["#"]["GetFederationTokenResult"][0]["#"])
		&& is_array($response["GetFederationTokenResponse"]["#"]["GetFederationTokenResult"][0]["#"])
		&& isset($response["GetFederationTokenResponse"]["#"]["GetFederationTokenResult"][0]["#"]["Credentials"])
		&& is_array($response["GetFederationTokenResponse"]["#"]["GetFederationTokenResult"][0]["#"]["Credentials"])
	)
	{
		$Credentials = $response["GetFederationTokenResponse"]["#"]["GetFederationTokenResult"][0]["#"]["Credentials"];

		if(
			isset($Credentials[0])
			&& is_array($Credentials[0])
			&& isset($Credentials[0]["#"])
			&& is_array($Credentials[0]["#"])
			&& isset($Credentials[0]["#"]["SessionToken"])
			&& is_array($Credentials[0]["#"]["SessionToken"])
			&& isset($Credentials[0]["#"]["SessionToken"][0])
			&& is_array($Credentials[0]["#"]["SessionToken"][0])
			&& isset($Credentials[0]["#"]["SessionToken"][0]["#"])
		)
			$SessionToken = $Credentials[0]["#"]["SessionToken"][0]["#"];
		else
		{
			return 1;
		}

		if(
			isset($Credentials[0])
			&& is_array($Credentials[0])
			&& isset($Credentials[0]["#"])
			&& is_array($Credentials[0]["#"])
			&& isset($Credentials[0]["#"]["SecretAccessKey"])
			&& is_array($Credentials[0]["#"]["SecretAccessKey"])
			&& isset($Credentials[0]["#"]["SecretAccessKey"][0])
			&& is_array($Credentials[0]["#"]["SecretAccessKey"][0])
			&& isset($Credentials[0]["#"]["SecretAccessKey"][0]["#"])
		)
			$SecretAccessKey = $Credentials[0]["#"]["SecretAccessKey"][0]["#"];
		else
		{
			return 2;
		}

		if(
			isset($Credentials[0])
			&& is_array($Credentials[0])
			&& isset($Credentials[0]["#"])
			&& is_array($Credentials[0]["#"])
			&& isset($Credentials[0]["#"]["AccessKeyId"])
			&& is_array($Credentials[0]["#"]["AccessKeyId"])
			&& isset($Credentials[0]["#"]["AccessKeyId"][0])
			&& is_array($Credentials[0]["#"]["AccessKeyId"][0])
			&& isset($Credentials[0]["#"]["AccessKeyId"][0]["#"])
		)
			$AccessKeyId = $Credentials[0]["#"]["AccessKeyId"][0]["#"];
		else
		{
			return 3;
		}

		return array(
			"ACCESS_KEY" => $AccessKeyId,
			"SECRET_KEY" => $SecretAccessKey,
			"SESSION_TOKEN" => $SessionToken,
		);
	}
	else
	{
		return false;
	}
}