public function modifyRequest()

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