in src/aws-cpp-sdk-core/source/client/CoreErrors.cpp [110:150]
AWS_CORE_API AWSError<CoreErrors> CoreErrorsMapper::GetErrorForHttpResponseCode(HttpResponseCode code)
{
// best effort attempt to map HTTP response codes to CoreErrors
bool retryable = IsRetryableHttpResponseCode(code);
AWSError<CoreErrors> error;
switch (code)
{
case HttpResponseCode::UNAUTHORIZED:
case HttpResponseCode::FORBIDDEN:
error = AWSError<CoreErrors>(CoreErrors::ACCESS_DENIED, retryable);
break;
case HttpResponseCode::NOT_FOUND:
error = AWSError<CoreErrors>(CoreErrors::RESOURCE_NOT_FOUND, retryable);
break;
case HttpResponseCode::TOO_MANY_REQUESTS:
error = AWSError<CoreErrors>(CoreErrors::SLOW_DOWN, retryable);
break;
case HttpResponseCode::INTERNAL_SERVER_ERROR:
error = AWSError<CoreErrors>(CoreErrors::INTERNAL_FAILURE, retryable);
break;
case HttpResponseCode::BANDWIDTH_LIMIT_EXCEEDED:
error = AWSError<CoreErrors>(CoreErrors::THROTTLING, retryable);
break;
case HttpResponseCode::SERVICE_UNAVAILABLE:
error = AWSError<CoreErrors>(CoreErrors::SERVICE_UNAVAILABLE, retryable);
break;
case HttpResponseCode::REQUEST_TIMEOUT:
case HttpResponseCode::AUTHENTICATION_TIMEOUT:
case HttpResponseCode::LOGIN_TIMEOUT:
case HttpResponseCode::GATEWAY_TIMEOUT:
case HttpResponseCode::NETWORK_READ_TIMEOUT:
case HttpResponseCode::NETWORK_CONNECT_TIMEOUT:
error = AWSError<CoreErrors>(CoreErrors::REQUEST_TIMEOUT, retryable);
break;
default:
int codeValue = static_cast<int>(code);
error = AWSError<CoreErrors>(CoreErrors::UNKNOWN, codeValue >= 500 && codeValue < 600);
}
error.SetResponseCode(code);
return error;
}