in alibabacloud-gateway-pds/golang/client/client.go [165:236]
func (client *Client) ModifyResponse(context *spi.InterceptorContext, attributeMap *spi.AttributeMap) (_err error) {
request := context.Request
response := context.Response
if tea.BoolValue(util.Is4xx(response.StatusCode)) || tea.BoolValue(util.Is5xx(response.StatusCode)) {
_res, _err := util.ReadAsJSON(response.Body)
if _err != nil {
return _err
}
err, _err := util.AssertAsMap(_res)
if _err != nil {
return _err
}
headers := response.Headers
requestId := headers["x-ca-request-id"]
err["statusCode"] = response.StatusCode
err["requestId"] = requestId
_err = tea.NewSDKError(map[string]interface{}{
"code": tea.ToString(client.DefaultAny(err["Code"], err["code"])),
"message": tea.ToString(client.DefaultAny(err["Message"], err["message"])),
"data": err,
})
return _err
}
if !tea.BoolValue(util.IsUnset(response.Body)) {
if tea.BoolValue(util.EqualNumber(response.StatusCode, tea.Int(204))) {
_, _err = util.ReadAsString(response.Body)
if _err != nil {
return _err
}
} else if tea.BoolValue(util.EqualString(request.BodyType, tea.String("binary"))) {
response.DeserializedBody = response.Body
} else if tea.BoolValue(util.EqualString(request.BodyType, tea.String("byte"))) {
byt, _err := util.ReadAsBytes(response.Body)
if _err != nil {
return _err
}
response.DeserializedBody = byt
} else if tea.BoolValue(util.EqualString(request.BodyType, tea.String("string"))) {
str, _err := util.ReadAsString(response.Body)
if _err != nil {
return _err
}
response.DeserializedBody = str
} else if tea.BoolValue(util.EqualString(request.BodyType, tea.String("json"))) {
response.DeserializedBody, _err = util.ReadAsJSON(response.Body)
if _err != nil {
return _err
}
} else if tea.BoolValue(util.EqualString(request.BodyType, tea.String("array"))) {
response.DeserializedBody, _err = util.ReadAsJSON(response.Body)
if _err != nil {
return _err
}
} else {
response.DeserializedBody, _err = util.ReadAsString(response.Body)
if _err != nil {
return _err
}
}
}
return _err
}