diff --git a/Minio.Functional.Tests/FunctionalTest.cs b/Minio.Functional.Tests/FunctionalTest.cs index 1048bfa212..95f35ceec6 100644 --- a/Minio.Functional.Tests/FunctionalTest.cs +++ b/Minio.Functional.Tests/FunctionalTest.cs @@ -1313,7 +1313,7 @@ internal static async Task DownloadObjectAsync(IMinioClient minio, string url, s CancellationToken cancellationToken = default) { using var response = await minio.WrapperGetAsync(url).ConfigureAwait(false); - if (string.IsNullOrEmpty(Convert.ToString(response.Content)) || !HttpStatusCode.OK.Equals(response.StatusCode)) + if (string.IsNullOrEmpty(Convert.ToString(response.Content)) || HttpStatusCode.OK != response.StatusCode) throw new InvalidOperationException("Unable to download via presigned URL" + nameof(response.Content)); using var fs = new FileStream(filePath, FileMode.CreateNew); diff --git a/Minio.Tests/NegativeTest.cs b/Minio.Tests/NegativeTest.cs index cd540fe22b..1f7ae8566e 100644 --- a/Minio.Tests/NegativeTest.cs +++ b/Minio.Tests/NegativeTest.cs @@ -81,7 +81,7 @@ public async Task TestInvalidObjectNameError() var ex = await Assert.ThrowsExceptionAsync( () => minio.StatObjectAsync(statObjArgs)).ConfigureAwait(false); for (var i = 0; - i < tryCount && ex.ServerResponse?.StatusCode.Equals(HttpStatusCode.ServiceUnavailable) == true; + i < tryCount && ex.ServerResponse?.StatusCode == HttpStatusCode.ServiceUnavailable; ++i) ex = await Assert.ThrowsExceptionAsync( () => minio.StatObjectAsync(statObjArgs)).ConfigureAwait(false); diff --git a/Minio/ApiEndpoints/BucketOperations.cs b/Minio/ApiEndpoints/BucketOperations.cs index fea10c2107..40fdda875b 100644 --- a/Minio/ApiEndpoints/BucketOperations.cs +++ b/Minio/ApiEndpoints/BucketOperations.cs @@ -53,7 +53,7 @@ await this.ExecuteTaskAsync(ResponseErrorHandlers, requestMessageBuilder, .ConfigureAwait(false); var bucketList = new ListAllMyBucketsResult(); - if (HttpStatusCode.OK.Equals(response.StatusCode)) + if (HttpStatusCode.OK == response.StatusCode) { using var stream = response.ContentBytes.AsStream(); bucketList = Utils.DeserializeXml(stream); @@ -84,7 +84,7 @@ await this.ExecuteTaskAsync(ResponseErrorHandlers, requestMessageBuilder, catch (InternalClientException ice) { return (ice.ServerResponse is null || - !HttpStatusCode.NotFound.Equals(ice.ServerResponse.StatusCode)) && + HttpStatusCode.NotFound != ice.ServerResponse.StatusCode) && ice.ServerResponse is not null; } catch (Exception ex) diff --git a/Minio/BucketRegionCache.cs b/Minio/BucketRegionCache.cs index de5aaf80f6..56e6c724cd 100644 --- a/Minio/BucketRegionCache.cs +++ b/Minio/BucketRegionCache.cs @@ -100,7 +100,7 @@ internal static async Task Update(IMinioClient client, string bucketName using var response = await client.ExecuteTaskAsync(client.ResponseErrorHandlers, requestBuilder).ConfigureAwait(false); - if (response is not null && HttpStatusCode.OK.Equals(response.StatusCode)) + if (response is not null && HttpStatusCode.OK == response.StatusCode) { var root = XDocument.Parse(response.Content); location = root.Root.Value; diff --git a/Minio/Credentials/AssumeRoleBaseProvider.cs b/Minio/Credentials/AssumeRoleBaseProvider.cs index 61a8f75d0c..748e483bb4 100644 --- a/Minio/Credentials/AssumeRoleBaseProvider.cs +++ b/Minio/Credentials/AssumeRoleBaseProvider.cs @@ -142,7 +142,7 @@ internal virtual async Task BuildRequest() internal virtual AccessCredentials ParseResponse(HttpResponseMessage response) { var content = Convert.ToString(response.Content, CultureInfo.InvariantCulture); - if (string.IsNullOrEmpty(content) || !HttpStatusCode.OK.Equals(response.StatusCode)) + if (string.IsNullOrEmpty(content) || HttpStatusCode.OK != response.StatusCode) throw new ArgumentNullException(nameof(response), "Unable to generate credentials. Response error."); using var stream = Encoding.UTF8.GetBytes(content).AsMemory().AsStream(); diff --git a/Minio/Credentials/IAMAWSProvider.cs b/Minio/Credentials/IAMAWSProvider.cs index a80bf9eba2..009617a02e 100644 --- a/Minio/Credentials/IAMAWSProvider.cs +++ b/Minio/Credentials/IAMAWSProvider.cs @@ -155,7 +155,7 @@ public async Task GetAccessCredentials(Uri url) await Client.ExecuteTaskAsync(Enumerable.Empty(), requestBuilder) .ConfigureAwait(false); if (string.IsNullOrWhiteSpace(response.Content) || - !HttpStatusCode.OK.Equals(response.StatusCode)) + HttpStatusCode.OK != response.StatusCode) throw new CredentialsProviderException("IAMAWSProvider", "Credential Get operation failed with HTTP Status code: " + response.StatusCode); /* @@ -187,7 +187,7 @@ await Client.ExecuteTaskAsync(Enumerable.Empty(), requ .ConfigureAwait(false); if (string.IsNullOrWhiteSpace(response.Content) || - !HttpStatusCode.OK.Equals(response.StatusCode)) + HttpStatusCode.OK != response.StatusCode) throw new CredentialsProviderException("IAMAWSProvider", "Credential Get operation failed with HTTP Status code: " + response.StatusCode); diff --git a/Minio/Credentials/WebIdentityClientGrantsProvider.cs b/Minio/Credentials/WebIdentityClientGrantsProvider.cs index c6077b84d0..201e53b38c 100644 --- a/Minio/Credentials/WebIdentityClientGrantsProvider.cs +++ b/Minio/Credentials/WebIdentityClientGrantsProvider.cs @@ -65,7 +65,7 @@ internal override AccessCredentials ParseResponse(HttpResponseMessage response) // txtBlock.Text = readStream.ReadToEnd(); var content = Convert.ToString(response.Content, CultureInfo.InvariantCulture); if (string.IsNullOrWhiteSpace(content) || - !HttpStatusCode.OK.Equals(response.StatusCode)) + HttpStatusCode.OK != response.StatusCode) throw new ArgumentNullException(nameof(response), "Unable to get credentials. Response error."); using var stream = Encoding.UTF8.GetBytes(content).AsMemory().AsStream(); diff --git a/Minio/DataModel/Response/GetBucketEncryptionResponse.cs b/Minio/DataModel/Response/GetBucketEncryptionResponse.cs index 3f283e5c69..a3f4274861 100644 --- a/Minio/DataModel/Response/GetBucketEncryptionResponse.cs +++ b/Minio/DataModel/Response/GetBucketEncryptionResponse.cs @@ -27,7 +27,7 @@ internal class GetBucketEncryptionResponse : GenericResponse internal GetBucketEncryptionResponse(HttpStatusCode statusCode, string responseContent) : base(statusCode, responseContent) { - if (string.IsNullOrEmpty(responseContent) || !HttpStatusCode.OK.Equals(statusCode)) + if (string.IsNullOrEmpty(responseContent) || HttpStatusCode.OK != statusCode) { BucketEncryptionConfiguration = null; return; diff --git a/Minio/DataModel/Response/GetBucketLifecycleResponse.cs b/Minio/DataModel/Response/GetBucketLifecycleResponse.cs index 66bb344c48..b345f60c06 100644 --- a/Minio/DataModel/Response/GetBucketLifecycleResponse.cs +++ b/Minio/DataModel/Response/GetBucketLifecycleResponse.cs @@ -28,7 +28,7 @@ internal GetBucketLifecycleResponse(HttpStatusCode statusCode, string responseCo : base(statusCode, responseContent) { if (string.IsNullOrEmpty(responseContent) || - !HttpStatusCode.OK.Equals(statusCode)) + HttpStatusCode.OK != statusCode) { BucketLifecycle = null; return; diff --git a/Minio/DataModel/Response/GetBucketNotificationsResponse.cs b/Minio/DataModel/Response/GetBucketNotificationsResponse.cs index 734e79ec6a..0ef4219a54 100644 --- a/Minio/DataModel/Response/GetBucketNotificationsResponse.cs +++ b/Minio/DataModel/Response/GetBucketNotificationsResponse.cs @@ -28,7 +28,7 @@ internal GetBucketNotificationsResponse(HttpStatusCode statusCode, string respon : base(statusCode, responseContent) { if (string.IsNullOrEmpty(responseContent) || - !HttpStatusCode.OK.Equals(statusCode)) + HttpStatusCode.OK != statusCode) { BucketNotificationConfiguration = new BucketNotification(); return; diff --git a/Minio/DataModel/Response/GetBucketReplicationResponse.cs b/Minio/DataModel/Response/GetBucketReplicationResponse.cs index 9a1066936f..7a843ace2d 100644 --- a/Minio/DataModel/Response/GetBucketReplicationResponse.cs +++ b/Minio/DataModel/Response/GetBucketReplicationResponse.cs @@ -1,4 +1,4 @@ -/* +/* * MinIO .NET Library for Amazon S3 Compatible Cloud Storage, (C) 2020, 2021 MinIO, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -28,7 +28,7 @@ internal GetBucketReplicationResponse(HttpStatusCode statusCode, string response : base(statusCode, responseContent) { if (string.IsNullOrEmpty(responseContent) || - !HttpStatusCode.OK.Equals(statusCode)) + HttpStatusCode.OK != statusCode) { Config = null; return; diff --git a/Minio/DataModel/Response/GetBucketTagsResponse.cs b/Minio/DataModel/Response/GetBucketTagsResponse.cs index fc4b2737f5..c6b4b18f3b 100644 --- a/Minio/DataModel/Response/GetBucketTagsResponse.cs +++ b/Minio/DataModel/Response/GetBucketTagsResponse.cs @@ -28,7 +28,7 @@ internal GetBucketTagsResponse(HttpStatusCode statusCode, string responseContent : base(statusCode, responseContent) { if (string.IsNullOrEmpty(responseContent) || - !HttpStatusCode.OK.Equals(statusCode)) + HttpStatusCode.OK != statusCode) { BucketTags = null; return; diff --git a/Minio/DataModel/Response/GetLegalHoldResponse.cs b/Minio/DataModel/Response/GetLegalHoldResponse.cs index ff724b6fe0..20b495b6a5 100644 --- a/Minio/DataModel/Response/GetLegalHoldResponse.cs +++ b/Minio/DataModel/Response/GetLegalHoldResponse.cs @@ -27,7 +27,7 @@ public class GetLegalHoldResponse : GenericResponse public GetLegalHoldResponse(HttpStatusCode statusCode, string responseContent) : base(statusCode, responseContent) { - if (string.IsNullOrEmpty(responseContent) || !HttpStatusCode.OK.Equals(statusCode)) + if (string.IsNullOrEmpty(responseContent) || HttpStatusCode.OK != statusCode) { CurrentLegalHoldConfiguration = null; return; diff --git a/Minio/DataModel/Response/GetObjectLockConfigurationResponse.cs b/Minio/DataModel/Response/GetObjectLockConfigurationResponse.cs index 99d0372774..aaf4e96808 100644 --- a/Minio/DataModel/Response/GetObjectLockConfigurationResponse.cs +++ b/Minio/DataModel/Response/GetObjectLockConfigurationResponse.cs @@ -27,7 +27,7 @@ internal class GetObjectLockConfigurationResponse : GenericResponse internal GetObjectLockConfigurationResponse(HttpStatusCode statusCode, string responseContent) : base(statusCode, responseContent) { - if (string.IsNullOrEmpty(responseContent) || !HttpStatusCode.OK.Equals(statusCode)) + if (string.IsNullOrEmpty(responseContent) || HttpStatusCode.OK != statusCode) { LockConfiguration = null; return; diff --git a/Minio/DataModel/Response/GetObjectTagsResponse.cs b/Minio/DataModel/Response/GetObjectTagsResponse.cs index a7181c5c06..3345d5632a 100644 --- a/Minio/DataModel/Response/GetObjectTagsResponse.cs +++ b/Minio/DataModel/Response/GetObjectTagsResponse.cs @@ -28,7 +28,7 @@ public GetObjectTagsResponse(HttpStatusCode statusCode, string responseContent) : base(statusCode, responseContent) { if (string.IsNullOrEmpty(responseContent) || - !HttpStatusCode.OK.Equals(statusCode)) + HttpStatusCode.OK != statusCode) { ObjectTags = null; return; diff --git a/Minio/DataModel/Response/GetObjectsListResponse.cs b/Minio/DataModel/Response/GetObjectsListResponse.cs index 52f819faff..1adbe59b28 100644 --- a/Minio/DataModel/Response/GetObjectsListResponse.cs +++ b/Minio/DataModel/Response/GetObjectsListResponse.cs @@ -33,7 +33,7 @@ internal GetObjectsListResponse(HttpStatusCode statusCode, string responseConten : base(statusCode, responseContent) { if (string.IsNullOrEmpty(responseContent) || - !HttpStatusCode.OK.Equals(statusCode)) + HttpStatusCode.OK != statusCode) return; using var stream = Encoding.UTF8.GetBytes(responseContent).AsMemory().AsStream(); diff --git a/Minio/DataModel/Response/GetObjectsVersionsListResponse.cs b/Minio/DataModel/Response/GetObjectsVersionsListResponse.cs index 40f3d8e772..dc598b8e1a 100644 --- a/Minio/DataModel/Response/GetObjectsVersionsListResponse.cs +++ b/Minio/DataModel/Response/GetObjectsVersionsListResponse.cs @@ -33,7 +33,7 @@ internal GetObjectsVersionsListResponse(HttpStatusCode statusCode, string respon : base(statusCode, responseContent) { if (string.IsNullOrEmpty(responseContent) || - !HttpStatusCode.OK.Equals(statusCode)) + HttpStatusCode.OK != statusCode) return; using var stream = Encoding.UTF8.GetBytes(responseContent).AsMemory().AsStream(); diff --git a/Minio/DataModel/Response/GetPolicyResponse.cs b/Minio/DataModel/Response/GetPolicyResponse.cs index add38fd083..5165187723 100644 --- a/Minio/DataModel/Response/GetPolicyResponse.cs +++ b/Minio/DataModel/Response/GetPolicyResponse.cs @@ -26,7 +26,7 @@ internal GetPolicyResponse(HttpStatusCode statusCode, string responseContent) : base(statusCode, responseContent) { if (string.IsNullOrEmpty(responseContent) || - !HttpStatusCode.OK.Equals(statusCode)) + HttpStatusCode.OK != statusCode) return; Initialize().Wait(); diff --git a/Minio/DataModel/Response/GetRetentionResponse.cs b/Minio/DataModel/Response/GetRetentionResponse.cs index 4965ad87fd..796ebbaa10 100644 --- a/Minio/DataModel/Response/GetRetentionResponse.cs +++ b/Minio/DataModel/Response/GetRetentionResponse.cs @@ -27,7 +27,7 @@ internal class GetRetentionResponse : GenericResponse public GetRetentionResponse(HttpStatusCode statusCode, string responseContent) : base(statusCode, responseContent) { - if (string.IsNullOrEmpty(responseContent) && !HttpStatusCode.OK.Equals(statusCode)) + if (string.IsNullOrEmpty(responseContent) && HttpStatusCode.OK != statusCode) { CurrentRetentionConfiguration = null; return; diff --git a/Minio/DataModel/Response/GetVersioningResponse.cs b/Minio/DataModel/Response/GetVersioningResponse.cs index d742476ec0..a6f600f89a 100644 --- a/Minio/DataModel/Response/GetVersioningResponse.cs +++ b/Minio/DataModel/Response/GetVersioningResponse.cs @@ -25,7 +25,7 @@ internal GetVersioningResponse(HttpStatusCode statusCode, string responseContent : base(statusCode, responseContent) { if (string.IsNullOrEmpty(responseContent) || - !HttpStatusCode.OK.Equals(statusCode)) + HttpStatusCode.OK != statusCode) return; VersioningConfig = Utils.DeserializeXml(responseContent); diff --git a/Minio/DataModel/Response/ListBucketsResponse.cs b/Minio/DataModel/Response/ListBucketsResponse.cs index 9230658fac..17cac32263 100644 --- a/Minio/DataModel/Response/ListBucketsResponse.cs +++ b/Minio/DataModel/Response/ListBucketsResponse.cs @@ -29,7 +29,7 @@ internal class ListBucketsResponse : GenericResponse internal ListBucketsResponse(HttpStatusCode statusCode, string responseContent) : base(statusCode, responseContent) { - if (string.IsNullOrEmpty(responseContent) || !HttpStatusCode.OK.Equals(statusCode)) + if (string.IsNullOrEmpty(responseContent) || HttpStatusCode.OK != statusCode) return; using var stream = Encoding.UTF8.GetBytes(responseContent).AsMemory().AsStream(); diff --git a/Minio/MinioClient.cs b/Minio/MinioClient.cs index dd5cddad58..4b30cd710d 100644 --- a/Minio/MinioClient.cs +++ b/Minio/MinioClient.cs @@ -102,9 +102,9 @@ internal static void ParseError(ResponseResult response) throw new ConnectionException( "Response is nil. Please report this issue https://github.com/minio/minio-dotnet/issues", response); - if (HttpStatusCode.Redirect.Equals(response.StatusCode) || - HttpStatusCode.TemporaryRedirect.Equals(response.StatusCode) || - HttpStatusCode.MovedPermanently.Equals(response.StatusCode)) + if (HttpStatusCode.Redirect == response.StatusCode || + HttpStatusCode.TemporaryRedirect == response.StatusCode || + HttpStatusCode.MovedPermanently == response.StatusCode) throw new RedirectionException( "Redirection detected. Please report this issue https://github.com/minio/minio-dotnet/issues"); @@ -119,11 +119,11 @@ internal static void ParseError(ResponseResult response) private static void ParseErrorNoContent(ResponseResult response) { - if (HttpStatusCode.Forbidden.Equals(response.StatusCode) - || HttpStatusCode.BadRequest.Equals(response.StatusCode) - || HttpStatusCode.NotFound.Equals(response.StatusCode) - || HttpStatusCode.MethodNotAllowed.Equals(response.StatusCode) - || HttpStatusCode.NotImplemented.Equals(response.StatusCode)) + if (HttpStatusCode.Forbidden == response.StatusCode + || HttpStatusCode.BadRequest == response.StatusCode + || HttpStatusCode.NotFound == response.StatusCode + || HttpStatusCode.MethodNotAllowed == response.StatusCode + || HttpStatusCode.NotImplemented == response.StatusCode) ParseWellKnownErrorNoContent(response); #pragma warning disable MA0099 // Use Explicit enum value instead of 0 @@ -158,7 +158,7 @@ private static void ParseWellKnownErrorNoContent(ResponseResult response) // zero, one or two segments var resourceSplits = pathAndQuery.Split(separator, 2, StringSplitOptions.RemoveEmptyEntries); - if (HttpStatusCode.NotFound.Equals(response.StatusCode)) + if (HttpStatusCode.NotFound == response.StatusCode) { var pathLength = resourceSplits.Length; var isAWS = host.EndsWith("s3.amazonaws.com", StringComparison.OrdinalIgnoreCase); @@ -192,7 +192,7 @@ private static void ParseWellKnownErrorNoContent(ResponseResult response) response); } } - else if (HttpStatusCode.BadRequest.Equals(response.StatusCode)) + else if (HttpStatusCode.BadRequest == response.StatusCode) { var pathLength = resourceSplits.Length; @@ -208,7 +208,7 @@ private static void ParseWellKnownErrorNoContent(ResponseResult response) response); } } - else if (HttpStatusCode.Forbidden.Equals(response.StatusCode)) + else if (HttpStatusCode.Forbidden == response.StatusCode) { errorResponse.Code = "Forbidden"; error = new AccessDeniedException("Access denied on the resource: " + pathAndQuery); @@ -223,7 +223,7 @@ private static void ParseErrorFromContent(ResponseResult response) if (response is null) throw new ArgumentNullException(nameof(response)); - if (response.StatusCode.Equals(HttpStatusCode.NotFound) + if (response.StatusCode == HttpStatusCode.NotFound && response.Request.RequestUri.PathAndQuery.EndsWith("?location", StringComparison.OrdinalIgnoreCase) && response.Request.Method.Equals(HttpMethod.Get)) { @@ -234,28 +234,28 @@ private static void ParseErrorFromContent(ResponseResult response) var errResponse = Utils.DeserializeXml(response.Content); - if (response.StatusCode.Equals(HttpStatusCode.Forbidden) + if (response.StatusCode == HttpStatusCode.Forbidden && (errResponse.Code.Equals("SignatureDoesNotMatch", StringComparison.OrdinalIgnoreCase) || errResponse.Code.Equals("InvalidAccessKeyId", StringComparison.OrdinalIgnoreCase))) throw new AuthorizationException(errResponse.Resource, errResponse.BucketName, errResponse.Message); // Handle XML response for Bucket Policy not found case - if (response.StatusCode.Equals(HttpStatusCode.NotFound) + if (response.StatusCode == HttpStatusCode.NotFound && response.Request.RequestUri.PathAndQuery.EndsWith("?policy", StringComparison.OrdinalIgnoreCase) && response.Request.Method.Equals(HttpMethod.Get) && string.Equals(errResponse.Code, "NoSuchBucketPolicy", StringComparison.OrdinalIgnoreCase)) throw new ErrorResponseException(errResponse, response) { XmlError = response.Content }; - if (response.StatusCode.Equals(HttpStatusCode.NotFound) + if (response.StatusCode == HttpStatusCode.NotFound && string.Equals(errResponse.Code, "NoSuchBucket", StringComparison.OrdinalIgnoreCase)) throw new BucketNotFoundException(errResponse.BucketName, "Not found."); - if (response.StatusCode.Equals(HttpStatusCode.BadRequest) + if (response.StatusCode == HttpStatusCode.BadRequest && errResponse.Code.Equals("MalformedXML", StringComparison.OrdinalIgnoreCase)) throw new MalFormedXMLException(errResponse.Resource, errResponse.BucketName, errResponse.Message, errResponse.Key); - if (response.StatusCode.Equals(HttpStatusCode.NotImplemented) + if (response.StatusCode == HttpStatusCode.NotImplemented && errResponse.Code.Equals("NotImplemented", StringComparison.OrdinalIgnoreCase)) { #pragma warning disable MA0025 // Implement the functionality instead of throwing NotImplementedException @@ -263,7 +263,7 @@ private static void ParseErrorFromContent(ResponseResult response) } #pragma warning restore MA0025 // Implement the functionality instead of throwing NotImplementedException - if (response.StatusCode.Equals(HttpStatusCode.BadRequest) + if (response.StatusCode == HttpStatusCode.BadRequest && errResponse.Code.Equals("InvalidRequest", StringComparison.OrdinalIgnoreCase)) { _ = new Dictionary(StringComparer.Ordinal) { { "legal-hold", "" } }; @@ -271,20 +271,20 @@ private static void ParseErrorFromContent(ResponseResult response) throw new MissingObjectLockConfigurationException(errResponse.BucketName, errResponse.Message); } - if (response.StatusCode.Equals(HttpStatusCode.NotFound) + if (response.StatusCode == HttpStatusCode.NotFound && errResponse.Code.Equals("ObjectLockConfigurationNotFoundError", StringComparison.OrdinalIgnoreCase)) throw new MissingObjectLockConfigurationException(errResponse.BucketName, errResponse.Message); - if (response.StatusCode.Equals(HttpStatusCode.NotFound) + if (response.StatusCode == HttpStatusCode.NotFound && errResponse.Code.Equals("ReplicationConfigurationNotFoundError", StringComparison.OrdinalIgnoreCase)) throw new MissingBucketReplicationConfigurationException(errResponse.BucketName, errResponse.Message); - if (response.StatusCode.Equals(HttpStatusCode.Conflict) + if (response.StatusCode == HttpStatusCode.Conflict && errResponse.Code.Equals("BucketAlreadyOwnedByYou", StringComparison.OrdinalIgnoreCase)) throw new ArgumentException("Bucket already owned by you: " + errResponse.BucketName, nameof(response)); - if (response.StatusCode.Equals(HttpStatusCode.PreconditionFailed) + if (response.StatusCode == HttpStatusCode.PreconditionFailed && errResponse.Code.Equals("PreconditionFailed", StringComparison.OrdinalIgnoreCase)) throw new PreconditionFailedException("At least one of the pre-conditions you " + "specified did not hold for object: \"" + errResponse.Resource +