in golang/client/client.go [2025:2159]
func doRequest_opResponse(response_ *dara.Response, client *Client, params *openapiutil.Params) (_result map[string]interface{}, _err error) {
if (dara.IntValue(response_.StatusCode) >= 400) && (dara.IntValue(response_.StatusCode) < 600) {
err := map[string]interface{}{}
if !dara.IsNil(response_.Headers["content-type"]) && dara.StringValue(response_.Headers["content-type"]) == "text/xml;charset=utf-8" {
_str, _err := dara.ReadAsString(response_.Body)
if _err != nil {
return _result, _err
}
respMap := dara.ParseXml(_str, nil)
err = dara.ToMap(respMap["Error"])
} else {
_res, _err := dara.ReadAsJSON(response_.Body)
if _err != nil {
return _result, _err
}
err = dara.ToMap(_res)
}
requestId := dara.ToString(dara.Default(err["RequestId"], err["requestId"]))
code := dara.ToString(dara.Default(err["Code"], err["code"]))
if (code == "Throttling") || (code == "Throttling.User") || (code == "Throttling.Api") {
_err = &ThrottlingError{
StatusCode: response_.StatusCode,
Code: dara.String(code),
Message: dara.String("code: " + dara.ToString(dara.IntValue(response_.StatusCode)) + ", " + dara.ToString(dara.Default(err["Message"], err["message"])) + " request id: " + requestId),
Description: dara.String(dara.ToString(dara.Default(err["Description"], err["description"]))),
RetryAfter: openapiutil.GetThrottlingTimeLeft(response_.Headers),
Data: err,
RequestId: dara.String(requestId),
}
return _result, _err
} else if (dara.IntValue(response_.StatusCode) >= 400) && (dara.IntValue(response_.StatusCode) < 500) {
_err = &ClientError{
StatusCode: response_.StatusCode,
Code: dara.String(code),
Message: dara.String("code: " + dara.ToString(dara.IntValue(response_.StatusCode)) + ", " + dara.ToString(dara.Default(err["Message"], err["message"])) + " request id: " + requestId),
Description: dara.String(dara.ToString(dara.Default(err["Description"], err["description"]))),
Data: err,
AccessDeniedDetail: client.GetAccessDeniedDetail(err),
RequestId: dara.String(requestId),
}
return _result, _err
} else {
_err = &ServerError{
StatusCode: response_.StatusCode,
Code: dara.String(code),
Message: dara.String("code: " + dara.ToString(dara.IntValue(response_.StatusCode)) + ", " + dara.ToString(dara.Default(err["Message"], err["message"])) + " request id: " + requestId),
Description: dara.String(dara.ToString(dara.Default(err["Description"], err["description"]))),
Data: err,
RequestId: dara.String(requestId),
}
return _result, _err
}
}
if dara.StringValue(params.BodyType) == "binary" {
resp := map[string]interface{}{
"body": response_.Body,
"headers": response_.Headers,
"statusCode": dara.IntValue(response_.StatusCode),
}
_result = resp
return _result, _err
} else if dara.StringValue(params.BodyType) == "byte" {
byt, _err := dara.ReadAsBytes(response_.Body)
if _err != nil {
return _result, _err
}
_err = dara.Convert(map[string]interface{}{
"body": byt,
"headers": response_.Headers,
"statusCode": dara.IntValue(response_.StatusCode),
}, &_result)
return _result, _err
} else if dara.StringValue(params.BodyType) == "string" {
respStr, _err := dara.ReadAsString(response_.Body)
if _err != nil {
return _result, _err
}
_err = dara.Convert(map[string]interface{}{
"body": respStr,
"headers": response_.Headers,
"statusCode": dara.IntValue(response_.StatusCode),
}, &_result)
return _result, _err
} else if dara.StringValue(params.BodyType) == "json" {
obj, _err := dara.ReadAsJSON(response_.Body)
if _err != nil {
return _result, _err
}
res := dara.ToMap(obj)
_err = dara.Convert(map[string]interface{}{
"body": res,
"headers": response_.Headers,
"statusCode": dara.IntValue(response_.StatusCode),
}, &_result)
return _result, _err
} else if dara.StringValue(params.BodyType) == "array" {
arr, _err := dara.ReadAsJSON(response_.Body)
if _err != nil {
return _result, _err
}
_err = dara.Convert(map[string]interface{}{
"body": arr,
"headers": response_.Headers,
"statusCode": dara.IntValue(response_.StatusCode),
}, &_result)
return _result, _err
} else {
anything, _err := dara.ReadAsString(response_.Body)
if _err != nil {
return _result, _err
}
_err = dara.Convert(map[string]interface{}{
"body": anything,
"headers": response_.Headers,
"statusCode": dara.IntValue(response_.StatusCode),
}, &_result)
return _result, _err
}
}