in alibabacloud-gateway-sls/golang/client/client.go [260:339]
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)) {
error, _err := util.ReadAsJSON(response.Body)
if _err != nil {
return _err
}
resMap, _err := util.AssertAsMap(error)
if _err != nil {
return _err
}
_err = tea.NewSDKError(map[string]interface{}{
"code": resMap["errorCode"],
"message": resMap["errorMessage"],
"accessDeniedDetail": resMap["accessDeniedDetail"],
"data": map[string]interface{}{
"httpCode": tea.IntValue(response.StatusCode),
"requestId": tea.StringValue(response.Headers["x-log-requestid"]),
"statusCode": tea.IntValue(response.StatusCode),
},
})
return _err
}
if !tea.BoolValue(util.IsUnset(response.Body)) {
bodyrawSize := response.Headers["x-log-bodyrawsize"]
compressType := response.Headers["x-log-compresstype"]
uncompressedData := response.Body
if !tea.BoolValue(util.IsUnset(bodyrawSize)) && !tea.BoolValue(util.IsUnset(compressType)) {
uncompressedData, _err = sls_util.ReadAndUncompressBlock(response.Body, compressType, bodyrawSize)
if _err != nil {
return _err
}
}
if tea.BoolValue(util.EqualString(request.BodyType, tea.String("binary"))) {
response.DeserializedBody = uncompressedData
} else if tea.BoolValue(util.EqualString(request.BodyType, tea.String("byte"))) {
byt, _err := util.ReadAsBytes(uncompressedData)
if _err != nil {
return _err
}
response.DeserializedBody = byt
} else if tea.BoolValue(util.EqualString(request.BodyType, tea.String("string"))) {
response.DeserializedBody, _err = util.ReadAsString(uncompressedData)
if _err != nil {
return _err
}
} else if tea.BoolValue(util.EqualString(request.BodyType, tea.String("json"))) {
obj, _err := util.ReadAsJSON(uncompressedData)
if _err != nil {
return _err
}
// var res = Util.assertAsMap(obj);
response.DeserializedBody = obj
} else if tea.BoolValue(util.EqualString(request.BodyType, tea.String("array"))) {
response.DeserializedBody, _err = util.ReadAsJSON(uncompressedData)
if _err != nil {
return _err
}
} else {
response.DeserializedBody, _err = util.ReadAsString(uncompressedData)
if _err != nil {
return _err
}
}
}
return _err
}