public function modifyRequest()

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);
    }