in alibabacloud-gateway-oss/php/src/Client.php [143:208]
public function modifyRequest($context, $attributeMap){
$request = $context->request;
$hostMap = [];
if (!Utils::isUnset($request->hostMap)) {
$hostMap = $request->hostMap;
}
$bucketName = @$hostMap["bucket"];
if (Utils::isUnset($bucketName)) {
$bucketName = "";
}
if (!Utils::isUnset(@$request->headers["x-oss-meta-*"])) {
$tmp = Utils::parseJSON(@$request->headers["x-oss-meta-*"]);
$mapData = Utils::assertAsMap($tmp);
$metaData = Utils::stringifyMapValue($mapData);
$metaKeySet = MapUtil::keySet($metaData);
$request->headers["x-oss-meta-*"] = null;
foreach($metaKeySet as $key){
$newKey = "x-oss-meta-" . $key . "";
$request->headers[$newKey] = @$metaData[$key];
}
}
$config = $context->configuration;
$regionId = $config->regionId;
$credential = $request->credential;
$accessKeyId = $credential->getAccessKeyId();
$accessKeySecret = $credential->getAccessKeySecret();
$securityToken = $credential->getSecurityToken();
if (!Utils::empty_($securityToken)) {
$request->headers["x-oss-security-token"] = $securityToken;
}
if (!Utils::isUnset($request->body)) {
if (StringUtil::equals($request->reqBodyType, "xml")) {
$reqBodyMap = Utils::assertAsMap($request->body);
$xmlStr = XML::toXML($reqBodyMap);
$request->stream = $xmlStr;
$request->headers["content-type"] = "application/xml";
$request->headers["content-md5"] = EncodeUtil::base64EncodeToString(SignatureUtil::MD5Sign($xmlStr));
}
else if (StringUtil::equals($request->reqBodyType, "json")) {
$reqBodyStr = Utils::toJSONString($request->body);
$request->stream = $reqBodyStr;
$request->headers["content-type"] = "application/json; charset=utf-8";
}
else if (StringUtil::equals($request->reqBodyType, "formData")) {
$reqBodyForm = Utils::assertAsMap($request->body);
$request->stream = OpenApiUtilClient::toForm($reqBodyForm);
$request->headers["content-type"] = "application/x-www-form-urlencoded";
}
else if (StringUtil::equals($request->reqBodyType, "binary")) {
$attributeMap->key = [
"crc" => "",
"md5" => ""
];
$request->stream = OSSUtils::inject($request->stream, $attributeMap->key);
$request->headers["content-type"] = "application/octet-stream";
}
}
$host = $this->getHost($config->endpointType, $bucketName, $config->endpoint);
$request->headers = Tea::merge([
"host" => $host,
"date" => Utils::getDateUTCString(),
"user-agent" => $request->userAgent
], $request->headers);
$signatureVersion = Utils::defaultString($request->signatureVersion, "v1");
$request->headers["authorization"] = $this->getAuthorization($signatureVersion, $bucketName, $request->pathname, $request->method, $request->query, $request->headers, $accessKeyId, $accessKeySecret, $regionId);
}