in alibabacloud-gateway-fc/golang/client/client.go [105:197]
func (client *Client) ModifyResponse(context *spi.InterceptorContext, attributeMap *spi.AttributeMap) (_err error) {
request := context.Request
config := context.Configuration
response := context.Response
if tea.BoolValue(util.Is4xx(response.StatusCode)) || tea.BoolValue(util.Is5xx(response.StatusCode)) {
if tea.BoolValue(string_.HasPrefix(config.Endpoint, tea.String("fc."))) && tea.BoolValue(string_.HasSuffix(config.Endpoint, tea.String(".aliyuncs.com"))) {
popRes, _err := util.ReadAsJSON(response.Body)
if _err != nil {
return _err
}
popErr, _err := util.AssertAsMap(popRes)
if _err != nil {
return _err
}
_err = tea.NewSDKError(map[string]interface{}{
"code": tea.ToString(client.DefaultAny(popErr["Code"], popErr["code"])),
"message": "code: " + tea.ToString(tea.IntValue(response.StatusCode)) + ", " + tea.ToString(client.DefaultAny(popErr["Message"], popErr["message"])) + " request id: " + tea.ToString(client.DefaultAny(popErr["RequestID"], popErr["RequestId"])),
"data": popErr,
})
return _err
} else {
_headers, _err := util.AssertAsMap(response.Headers)
if _err != nil {
return _err
}
fcRes, _err := util.ReadAsJSON(response.Body)
if _err != nil {
return _err
}
fcErr, _err := util.AssertAsMap(fcRes)
if _err != nil {
return _err
}
_err = tea.NewSDKError(map[string]interface{}{
"code": fcErr["ErrorCode"],
"message": "code: " + tea.ToString(tea.IntValue(response.StatusCode)) + ", " + tea.ToString(fcErr["ErrorMessage"]) + " request id: " + tea.ToString(_headers["x-fc-request-id"]),
"data": fcErr,
})
return _err
}
}
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"))) {
obj, _err := util.ReadAsJSON(response.Body)
if _err != nil {
return _err
}
res, _err := util.AssertAsMap(obj)
if _err != nil {
return _err
}
response.DeserializedBody = res
} else if tea.BoolValue(util.EqualString(request.BodyType, tea.String("array"))) {
arr, _err := util.ReadAsJSON(response.Body)
if _err != nil {
return _err
}
response.DeserializedBody = arr
} else {
response.DeserializedBody, _err = util.ReadAsString(response.Body)
if _err != nil {
return _err
}
}
return _err
}