execute method
Executes the AdminCreateUser request
@return Future resolving to AdminCreateUserResult @throws CognitoValidationException for invalid parameters @throws CognitoServiceException for API failures
Implementation
Future<CognitoAdminCreateUserResult> execute() async {
final payload = _payload();
int attempt = 0;
Object? lastError;
while (attempt <= maxRetries) {
try {
final res = await httpClient.send(
service: 'cognito-idp',
target: 'AWSCognitoIdentityProviderService.AdminCreateUser',
region: region,
payload: payload,
timeout: requestTimeout,
headers: const {'Content-Type': 'application/x-amz-json-1.1'},
);
if (res.statusCode == 200) {
Map<String, dynamic>? body;
try {
body = res.bodyString.isEmpty
? null
: (json.decode(res.bodyString) as Map<String, dynamic>);
} catch (_) {
body = null;
}
return CognitoAdminCreateUserResult(body);
}
if (res.statusCode >= 400 && res.statusCode < 500) {
throw CognitoServiceException(
'AdminCreateUser failed. Body: ${res.bodyString}',
statusCode: res.statusCode,
);
}
if (res.statusCode >= 500) {
throw CognitoServiceException(
'AdminCreateUser temporary failure.',
statusCode: res.statusCode,
);
}
throw CognitoServiceException(
'AdminCreateUser unexpected status.',
statusCode: res.statusCode,
);
} catch (e) {
lastError = e;
final transient = _isTransient(e);
if (!transient || attempt == maxRetries) break;
await Future<void>.delayed(Duration(milliseconds: 200 * (attempt + 1)));
} finally {
attempt++;
}
}
throw CognitoServiceException(
'AdminCreateUser failed after retries. Last error: $lastError',
);
}