in alibabacloud-gateway-oss/csharp/core/Client.cs [441:577]
public async Task ModifyResponseAsync(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);
}
}
}