in alibabacloud-gateway-pds/php/src/Client.php [43:128]
public function modifyRequest($context, $attributeMap)
{
$request = $context->request;
$config = $context->configuration;
$date = Utils::getDateUTCString();
$request->headers = Tea::merge([
"date" => $date,
"host" => $config->endpoint,
"x-acs-version" => $request->version,
"x-acs-action" => $request->action,
"user-agent" => $request->userAgent,
"x-acs-signature-nonce" => Utils::getNonce(),
"accept" => "application/json"
], $request->headers);
$signatureAlgorithm = Utils::defaultString($request->signatureAlgorithm, "ACS4-HMAC-SHA256");
$signatureVersion = Utils::defaultString($request->signatureVersion, "v1");
$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 (StringUtil::equals($signatureVersion, "v4")) {
if (Utils::equalString($signatureAlgorithm, "ACS4-HMAC-SM3")) {
$request->headers["x-acs-content-sm3"] = $hashedRequestPayload;
} else {
$request->headers["x-acs-content-sha256"] = $hashedRequestPayload;
}
} else {
$request->headers["x-acs-signature-method"] = "HMAC-SHA1";
$request->headers["x-acs-signature-version"] = "1.0";
}
if (!Utils::equalString($request->authType, "Anonymous") && !Utils::isUnset($request->credential)) {
$credential = $request->credential;
$credentialModel = $credential->getCredential();
$authType = $credentialModel->type;
if (Utils::equalString($authType, "bearer")) {
$bearerToken = $credentialModel->bearerToken;
$request->headers["x-acs-bearer-token"] = $bearerToken;
$request->headers["Authorization"] = "Bearer " . $bearerToken . "";
} else {
$accessKeyId = $credentialModel->accessKeyId;
$accessKeySecret = $credentialModel->accessKeySecret;
$securityToken = $credentialModel->securityToken;
if (!Utils::empty_($securityToken)) {
$request->headers["x-acs-security-token"] = $securityToken;
}
$headers = [];
if (!Utils::isUnset(@$request->headers["content-type"])) {
$headers = $request->headers;
} else if (StringUtil::equals($request->reqBodyType, "formData") && StringUtil::equals($request->action, "DownloadFile") && StringUtil::equals($request->pathname, "/v2/file/download")) {
$headersArray = MapUtil::keySet($request->headers);
foreach ($headersArray as $key) {
$headers[$key] = @$request->headers[$key];
}
@$headers["content-type"] = "application/x-www-form-urlencoded; charset=UTF-8";
} else {
$headers = $request->headers;
}
if (StringUtil::equals($signatureVersion, "v4")) {
$dateNew = StringUtil::subString($date, 0, 10);
$region = $this->getRegion($config->endpoint);
$signingkey = $this->getSigningkey($signatureAlgorithm, $accessKeySecret, $region, $dateNew);
$request->headers["Authorization"] = $this->getAuthorizationV4($request->pathname, $request->method, $request->query, $headers, $signatureAlgorithm, $hashedRequestPayload, $accessKeyId, $signingkey, $request->productId, $region, $dateNew);
} else {
$request->headers["Authorization"] = $this->getAuthorization($request->pathname, $request->method, $request->query, $headers, $accessKeyId, $accessKeySecret);
}
}
}
}