in golang/client/client.go [1772:1897]
func doROARequest_opResponse(response_ *dara.Response, client *Client, bodyType *string) (_result map[string]interface{}, _err error) {
if dara.IntValue(response_.StatusCode) == 204 {
_err = dara.Convert(map[string]map[string]*string{
"headers": response_.Headers,
}, &_result)
return _result, _err
}
if (dara.IntValue(response_.StatusCode) >= 400) && (dara.IntValue(response_.StatusCode) < 600) {
_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"]))
requestId = dara.ToString(dara.Default(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(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(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(bodyType) == "string" {
_str, _err := dara.ReadAsString(response_.Body)
if _err != nil {
return _result, _err
}
_err = dara.Convert(map[string]interface{}{
"body": _str,
"headers": response_.Headers,
"statusCode": dara.IntValue(response_.StatusCode),
}, &_result)
return _result, _err
} else if dara.StringValue(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(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 {
_err = dara.Convert(map[string]interface{}{
"headers": response_.Headers,
"statusCode": dara.IntValue(response_.StatusCode),
}, &_result)
return _result, _err
}
}