refreshAndGetAwsCredentials function

Future<({String accessKeyId, String secretAccessKey, String sessionToken})?> refreshAndGetAwsCredentials()

Refresh and get AWS credentials with caching.

Implementation

Future<({String accessKeyId, String secretAccessKey, String sessionToken})?>
refreshAndGetAwsCredentials() async {
  if (_awsCredentialsCache != null && _awsCredentialsCacheTime != null) {
    final elapsed = DateTime.now().difference(_awsCredentialsCacheTime!);
    if (elapsed.inMilliseconds < defaultAwsStsTtl) {
      return _awsCredentialsCache;
    }
  }

  final refreshed = await _runAwsAuthRefresh();
  final credentials = await _getAwsCredsFromCredentialExport();

  if (credentials != null) {
    _awsCredentialsCache = credentials;
    _awsCredentialsCacheTime = DateTime.now();
  }

  return credentials;
}