public void modifyRequest()

in alibabacloud-gateway-oss/java/src/main/java/com/aliyun/gateway/oss/Client.java [139:240]


    public void modifyRequest(com.aliyun.gateway.spi.models.InterceptorContext context, com.aliyun.gateway.spi.models.AttributeMap attributeMap) throws Exception {
        com.aliyun.gateway.spi.models.InterceptorContext.InterceptorContextRequest request = context.request;
        java.util.Map<String, String> hostMap = new java.util.HashMap<>();
        if (!com.aliyun.teautil.Common.isUnset(request.hostMap)) {
            hostMap = request.hostMap;
        }

        String bucketName = hostMap.get("bucket");
        if (com.aliyun.teautil.Common.isUnset(bucketName)) {
            bucketName = "";
        }

        if (!com.aliyun.teautil.Common.isUnset(request.headers.get("x-oss-meta-*"))) {
            Object tmp = com.aliyun.teautil.Common.parseJSON(request.headers.get("x-oss-meta-*"));
            java.util.Map<String, Object> mapData = com.aliyun.teautil.Common.assertAsMap(tmp);
            java.util.Map<String, String> metaData = com.aliyun.teautil.Common.stringifyMapValue(mapData);
            java.util.List<String> metaKeySet = com.aliyun.darabonba.map.Client.keySet(metaData);
            request.headers.put("x-oss-meta-*", null);
            for (String key : metaKeySet) {
                String newKey = "x-oss-meta-" + key + "";
                request.headers.put(newKey, metaData.get(key));
            }
        }

        com.aliyun.gateway.spi.models.InterceptorContext.InterceptorContextConfiguration config = context.configuration;
        String regionId = config.regionId;
        if (com.aliyun.teautil.Common.isUnset(regionId) || com.aliyun.teautil.Common.empty(regionId)) {
            regionId = this.getRegionIdFromEndpoint(config.endpoint);
        }

        com.aliyun.credentials.Client credential = request.credential;
        String accessKeyId = credential.getAccessKeyId();
        String accessKeySecret = credential.getAccessKeySecret();
        String securityToken = credential.getSecurityToken();
        if (!com.aliyun.teautil.Common.empty(securityToken)) {
            request.headers.put("x-oss-security-token", securityToken);
        }

        if (!com.aliyun.teautil.Common.isUnset(request.body)) {
            if (com.aliyun.darabonbastring.Client.equals(request.reqBodyType, "xml")) {
                java.util.Map<String, Object> reqBodyMap = com.aliyun.teautil.Common.assertAsMap(request.body);
                // for python:
                // xml_str = OSS_UtilClient.to_xml(req_body_map)
                String xmlStr = com.aliyun.teaxml.Client.toXML(reqBodyMap);
                request.stream = Tea.toReadable(xmlStr);
                request.headers.put("content-type", "application/xml");
                request.headers.put("content-md5", com.aliyun.darabonba.encode.Encoder.base64EncodeToString(com.aliyun.darabonba.signature.Signer.MD5Sign(xmlStr)));
            } else if (com.aliyun.darabonbastring.Client.equals(request.reqBodyType, "json")) {
                String reqBodyStr = com.aliyun.teautil.Common.toJSONString(request.body);
                request.stream = Tea.toReadable(reqBodyStr);
                request.headers.put("content-type", "application/json; charset=utf-8");
            } else if (com.aliyun.darabonbastring.Client.equals(request.reqBodyType, "formData")) {
                java.util.Map<String, Object> reqBodyForm = com.aliyun.teautil.Common.assertAsMap(request.body);
                request.stream = Tea.toReadable(com.aliyun.openapiutil.Client.toForm(reqBodyForm));
                request.headers.put("content-type", "application/x-www-form-urlencoded");
            } else if (com.aliyun.darabonbastring.Client.equals(request.reqBodyType, "binary")) {
                attributeMap.key = TeaConverter.buildMap(
                    new TeaPair("crc", ""),
                    new TeaPair("md5", "")
                );
                request.stream = com.aliyun.ossutil.Client.inject(request.stream, attributeMap.key);
                request.headers.put("content-type", "application/octet-stream");
            }

        }

        String host = this.getHost(config.endpointType, bucketName, config.endpoint, context);
        request.headers = TeaConverter.merge(String.class,
            TeaConverter.buildMap(
                new TeaPair("host", host),
                new TeaPair("date", com.aliyun.teautil.Common.getDateUTCString()),
                new TeaPair("user-agent", request.userAgent)
            ),
            request.headers
        );
        String originPath = request.pathname;
        java.util.Map<String, String> originQuery = request.query;
        if (!com.aliyun.teautil.Common.empty(originPath)) {
            java.util.List<String> pathAndQueries = com.aliyun.darabonbastring.Client.split(originPath, "?", 2);
            request.pathname = pathAndQueries.get(0);
            if (com.aliyun.teautil.Common.equalNumber(com.aliyun.darabonba.array.Client.size(pathAndQueries), 2)) {
                java.util.List<String> pathQueries = com.aliyun.darabonbastring.Client.split(pathAndQueries.get(1), "&", null);
                for (String sub : pathQueries) {
                    java.util.List<String> item = com.aliyun.darabonbastring.Client.split(sub, "=", null);
                    String queryKey = item.get(0);
                    String queryValue = "";
                    if (com.aliyun.teautil.Common.equalNumber(com.aliyun.darabonba.array.Client.size(item), 2)) {
                        queryValue = item.get(1);
                    }

                    if (com.aliyun.teautil.Common.empty(originQuery.get(queryKey))) {
                        request.query.put(queryKey, queryValue);
                    }

                }
            }

        }

        String signatureVersion = com.aliyun.teautil.Common.defaultString(request.signatureVersion, "v4");
        request.headers.put("authorization", this.getAuthorization(signatureVersion, bucketName, request.pathname, request.method, request.query, request.headers, accessKeyId, accessKeySecret, regionId));
    }