public void ModifyResponse()

in alibabacloud-gateway-oss/csharp/core/Client.cs [303:439]


        public void ModifyResponse(AlibabaCloud.GatewaySpi.Models.InterceptorContext context, AlibabaCloud.GatewaySpi.Models.AttributeMap attributeMap)
        {
            AlibabaCloud.GatewaySpi.Models.InterceptorContext.InterceptorContextRequest request = context.Request;
            AlibabaCloud.GatewaySpi.Models.InterceptorContext.InterceptorContextResponse response = context.Response;
            string bodyStr = null;
            if (AlibabaCloud.TeaUtil.Common.Is4xx(response.StatusCode) || AlibabaCloud.TeaUtil.Common.Is5xx(response.StatusCode))
            {
                bodyStr = AlibabaCloud.TeaUtil.Common.ReadAsString(response.Body);
                if (!AlibabaCloud.TeaUtil.Common.Empty(bodyStr))
                {
                    Dictionary<string, object> respMap = AlibabaCloud.TeaXML.Client.ParseXml(bodyStr, null);
                    Dictionary<string, object> err = AlibabaCloud.TeaUtil.Common.AssertAsMap(respMap.Get("Error"));
                    throw new TeaException(new Dictionary<string, object>
                    {
                        {"code", err.Get("Code")},
                        {"message", err.Get("Message")},
                        {"data", new Dictionary<string, object>
                        {
                            {"statusCode", response.StatusCode},
                            {"requestId", err.Get("RequestId")},
                            {"ecCode", err.Get("EC")},
                            {"Recommend", err.Get("RecommendDoc")},
                            {"hostId", err.Get("HostId")},
                        }},
                    });
                }
                else
                {
                    Dictionary<string, string> headers = response.Headers;
                    string requestId = headers.Get("x-oss-request-id");
                    string ecCode = headers.Get("x-oss-ec-code");
                    throw new TeaException(new Dictionary<string, object>
                    {
                        {"code", response.StatusCode},
                        {"message", null},
                        {"data", new Dictionary<string, object>
                        {
                            {"statusCode", response.StatusCode},
                            {"requestId", "" + requestId},
                            {"ecCode", ecCode},
                        }},
                    });
                }
            }
            Dictionary<string, string> ctx = attributeMap.Key;
            if (!AlibabaCloud.TeaUtil.Common.IsUnset(ctx))
            {
                if (!AlibabaCloud.TeaUtil.Common.IsUnset(ctx.Get("crc")) && !AlibabaCloud.TeaUtil.Common.IsUnset(response.Headers.Get("x-oss-hash-crc64ecma")) && !AlibabaCloud.DarabonbaString.StringUtil.Equals(ctx.Get("crc"), response.Headers.Get("x-oss-hash-crc64ecma")))
                {
                    throw new TeaException(new Dictionary<string, object>
                    {
                        {"code", "CrcNotMatched"},
                        {"data", new Dictionary<string, string>
                        {
                            {"clientCrc", ctx.Get("crc")},
                            {"serverCrc", response.Headers.Get("x-oss-hash-crc64ecma")},
                        }},
                    });
                }
                if (!AlibabaCloud.TeaUtil.Common.IsUnset(ctx.Get("md5")) && !AlibabaCloud.TeaUtil.Common.IsUnset(response.Headers.Get("content-md5")) && !AlibabaCloud.DarabonbaString.StringUtil.Equals(ctx.Get("md5"), response.Headers.Get("content-md5")))
                {
                    throw new TeaException(new Dictionary<string, object>
                    {
                        {"code", "MD5NotMatched"},
                        {"data", new Dictionary<string, string>
                        {
                            {"clientMD5", ctx.Get("md5")},
                            {"serverMD5", response.Headers.Get("content-md5")},
                        }},
                    });
                }
            }
            if (!AlibabaCloud.TeaUtil.Common.IsUnset(response.Body))
            {
                if (AlibabaCloud.TeaUtil.Common.EqualNumber(response.StatusCode, 204))
                {
                    AlibabaCloud.TeaUtil.Common.ReadAsString(response.Body);
                }
                else if (AlibabaCloud.DarabonbaString.StringUtil.Equals(request.BodyType, "xml"))
                {
                    bodyStr = AlibabaCloud.TeaUtil.Common.ReadAsString(response.Body);
                    response.DeserializedBody = bodyStr;
                    if (!AlibabaCloud.TeaUtil.Common.Empty(bodyStr))
                    {
                        Dictionary<string, object> result = AlibabaCloud.TeaXML.Client.ParseXml(bodyStr, null);
                        List<string> list = AlibabaCloud.DarabonbaMap.MapUtil.KeySet(result);
                        if (AlibabaCloud.TeaUtil.Common.EqualNumber(AlibabaCloud.DarabonbaArray.ArrayUtil.Size(list), 1))
                        {
                            string tmp = list[0];
                            try
                            {
                                response.DeserializedBody = AlibabaCloud.TeaUtil.Common.AssertAsMap(result.Get(tmp));
                            }
                            catch (TeaException error)
                            {
                                response.DeserializedBody = result;
                            }
                            catch (Exception _error)
                            {
                                TeaException error = new TeaException(new Dictionary<string, object>
                                {
                                    { "message", _error.Message }
                                });
                                response.DeserializedBody = result;
                            }
                        }
                    }
                }
                else if (AlibabaCloud.TeaUtil.Common.EqualString(request.BodyType, "binary"))
                {
                    response.DeserializedBody = response.Body;
                }
                else if (AlibabaCloud.TeaUtil.Common.EqualString(request.BodyType, "byte"))
                {
                    byte[] byt = AlibabaCloud.TeaUtil.Common.ReadAsBytes(response.Body);
                    response.DeserializedBody = byt;
                }
                else if (AlibabaCloud.TeaUtil.Common.EqualString(request.BodyType, "string"))
                {
                    response.DeserializedBody = AlibabaCloud.TeaUtil.Common.ReadAsString(response.Body);
                }
                else if (AlibabaCloud.TeaUtil.Common.EqualString(request.BodyType, "json"))
                {
                    object obj = AlibabaCloud.TeaUtil.Common.ReadAsJSON(response.Body);
                    Dictionary<string, object> res = AlibabaCloud.TeaUtil.Common.AssertAsMap(obj);
                    response.DeserializedBody = res;
                }
                else if (AlibabaCloud.TeaUtil.Common.EqualString(request.BodyType, "array"))
                {
                    response.DeserializedBody = AlibabaCloud.TeaUtil.Common.ReadAsJSON(response.Body);
                }
                else
                {
                    response.DeserializedBody = AlibabaCloud.TeaUtil.Common.ReadAsString(response.Body);
                }
            }
        }