in alibabacloud-gateway-pop/php/src/Client.php [71:149]
public function modifyRequest($context, $attributeMap)
{
$request = $context->request;
$config = $context->configuration;
$date = OpenApiUtilClient::getTimestamp();
$request->headers = Tea::merge([
"host" => $config->endpoint,
"x-acs-version" => $request->version,
"x-acs-action" => $request->action,
"user-agent" => $request->userAgent,
"x-acs-date" => $date,
"x-acs-signature-nonce" => Utils::getNonce(),
"accept" => "application/json"
], $request->headers);
$signatureAlgorithm = Utils::defaultString($request->signatureAlgorithm, $this->_sha256);
$hashedRequestPayload = EncodeUtil::hexEncode(EncodeUtil::hash(Utils::toBytes(""), $signatureAlgorithm));
if (!Utils::isUnset($request->stream)) {
$tmp = Utils::readAsBytes($request->stream);
$hashedRequestPayload = EncodeUtil::hexEncode(EncodeUtil::hash($tmp, $signatureAlgorithm));
$request->stream = $tmp;
$request->headers["content-type"] = "application/octet-stream";
} else {
if (!Utils::isUnset($request->body)) {
if (Utils::equalString($request->reqBodyType, "json")) {
$jsonObj = Utils::toJSONString($request->body);
$hashedRequestPayload = EncodeUtil::hexEncode(EncodeUtil::hash(Utils::toBytes($jsonObj), $signatureAlgorithm));
$request->stream = $jsonObj;
$request->headers["content-type"] = "application/json; charset=utf-8";
} else {
$m = Utils::assertAsMap($request->body);
$formObj = OpenApiUtilClient::toForm($m);
$hashedRequestPayload = EncodeUtil::hexEncode(EncodeUtil::hash(Utils::toBytes($formObj), $signatureAlgorithm));
$request->stream = $formObj;
$request->headers["content-type"] = "application/x-www-form-urlencoded";
}
}
}
if (Utils::equalString($signatureAlgorithm, $this->_sm3)) {
$request->headers["x-acs-content-sm3"] = $hashedRequestPayload;
} else {
$request->headers["x-acs-content-sha256"] = $hashedRequestPayload;
}
if (!Utils::equalString($request->authType, "Anonymous")) {
$credential = $request->credential;
if (Utils::isUnset($credential)) {
throw new TeaError([
"code" => "ParameterMissing",
"message" => "'config.credential' can not be unset"
]);
}
$credentialModel = $credential->getCredential();
if (!Utils::empty_($credentialModel->providerName)) {
$request->headers["x-acs-credentials-provider"] = $credentialModel->providerName;
}
$authType = $credentialModel->type;
if (Utils::equalString($authType, "bearer")) {
$bearerToken = $credential->getBearerToken();
$request->headers["x-acs-bearer-token"] = $bearerToken;
$request->headers["x-acs-signature-type"] = "BEARERTOKEN";
$request->headers["Authorization"] = "Bearer " . $bearerToken . "";
} else if (Utils::equalString($authType, "id_token")) {
$idToken = $credentialModel->securityToken;
$request->headers["x-acs-zero-trust-idtoken"] = $idToken;
} else {
$accessKeyId = $credentialModel->accessKeyId;
$accessKeySecret = $credentialModel->accessKeySecret;
$securityToken = $credentialModel->securityToken;
if (!Utils::empty_($securityToken)) {
$request->headers["x-acs-accesskey-id"] = $accessKeyId;
$request->headers["x-acs-security-token"] = $securityToken;
}
$dateNew = StringUtil::subString($date, 0, 10);
$dateNew = StringUtil::replace($dateNew, "-", "", null);
$region = $this->getRegion($request->productId, $config->endpoint, $config->regionId);
$signingkey = $this->getSigningkey($signatureAlgorithm, $accessKeySecret, $request->productId, $region, $dateNew);
$request->headers["Authorization"] = $this->getAuthorization($request->pathname, $request->method, $request->query, $request->headers, $signatureAlgorithm, $hashedRequestPayload, $accessKeyId, $signingkey, $request->productId, $region, $dateNew);
}
}
}