From c08571efba11b3289a2efd8eecb1f406a82cc52e Mon Sep 17 00:00:00 2001 From: Kenneth Skovhede Date: Fri, 1 Mar 2024 14:30:28 +0100 Subject: [PATCH] Updating S3 to use the async interface --- Duplicati/Library/Backend/S3/S3AwsClient.cs | 10 +++++----- Duplicati/Library/Backend/S3/S3IAM.cs | 17 +++++++++-------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Duplicati/Library/Backend/S3/S3AwsClient.cs b/Duplicati/Library/Backend/S3/S3AwsClient.cs index 65b0f0a67..54a871668 100644 --- a/Duplicati/Library/Backend/S3/S3AwsClient.cs +++ b/Duplicati/Library/Backend/S3/S3AwsClient.cs @@ -96,7 +96,7 @@ namespace Duplicati.Library.Backend if (!string.IsNullOrEmpty(m_locationConstraint)) request.BucketRegionName = m_locationConstraint; - m_client.PutBucket(request); + m_client.PutBucketAsync(request).GetAwaiter().GetResult(); } public virtual void GetFileStream(string bucketName, string keyName, System.IO.Stream target) @@ -107,7 +107,7 @@ namespace Duplicati.Library.Backend Key = keyName }; - using (GetObjectResponse objectGetResponse = m_client.GetObject(objectGetRequest)) + using (GetObjectResponse objectGetResponse = m_client.GetObjectAsync(objectGetRequest).GetAwaiter().GetResult()) using (System.IO.Stream s = objectGetResponse.ResponseStream) { try @@ -164,7 +164,7 @@ namespace Duplicati.Library.Backend Key = keyName }; - m_client.DeleteObject(objectDeleteRequest); + m_client.DeleteObjectAsync(objectDeleteRequest).GetAwaiter().GetResult(); } public virtual IEnumerable ListBucket(string bucketName, string prefix) @@ -192,7 +192,7 @@ namespace Duplicati.Library.Backend ListObjectsResponse listResponse; try { - listResponse = m_client.ListObjects(listRequest); + listResponse = m_client.ListObjectsAsync(listRequest).GetAwaiter().GetResult(); } catch (AmazonS3Exception e) { @@ -230,7 +230,7 @@ namespace Duplicati.Library.Backend DestinationKey = target }; - m_client.CopyObject(copyObjectRequest); + m_client.CopyObjectAsync(copyObjectRequest).GetAwaiter().GetResult(); DeleteObject(bucketName, source); } diff --git a/Duplicati/Library/Backend/S3/S3IAM.cs b/Duplicati/Library/Backend/S3/S3IAM.cs index 2c64e9592..edf09b37f 100644 --- a/Duplicati/Library/Backend/S3/S3IAM.cs +++ b/Duplicati/Library/Backend/S3/S3IAM.cs @@ -155,9 +155,10 @@ namespace Duplicati.Library.Backend ActionNames = new[] { "iam:CreateUser" }.ToList() }; - return cl.SimulatePrincipalPolicy(simulatePrincipalPolicy). - EvaluationResults.First(). - EvalDecision == PolicyEvaluationDecisionType.Allowed; + return cl.SimulatePrincipalPolicyAsync(simulatePrincipalPolicy) + .GetAwaiter().GetResult() + .EvaluationResults.First() + .EvalDecision == PolicyEvaluationDecisionType.Allowed; } @@ -195,7 +196,7 @@ namespace Duplicati.Library.Backend User user; try { - user = cl.GetUser().User; + user = cl.GetUserAsync().GetAwaiter().GetResult().User; } catch (Exception ex) when (ex is NoSuchEntityException || ex is ServiceFailureException) { @@ -217,13 +218,13 @@ namespace Duplicati.Library.Backend var policydoc = GeneratePolicyDoc(path); var cl = new AmazonIdentityManagementServiceClient(awsid, awskey); - var user = cl.CreateUser(new CreateUserRequest(username)).User; - cl.PutUserPolicy(new PutUserPolicyRequest( + var user = cl.CreateUserAsync(new CreateUserRequest(username)).GetAwaiter().GetResult().User; + cl.PutUserPolicyAsync(new PutUserPolicyRequest( user.UserName, policyname, policydoc - )); - var key = cl.CreateAccessKey(new CreateAccessKeyRequest { UserName = user.UserName }).AccessKey; + )).GetAwaiter().GetResult(); + var key = cl.CreateAccessKeyAsync(new CreateAccessKeyRequest { UserName = user.UserName }).GetAwaiter().GetResult().AccessKey; return new Dictionary {