public async Task DeleteObjects() { List <S3DeleteInfo> resources = new List <S3DeleteInfo>(2); resources.Add(new S3DeleteInfo(nameof(DeleteObjects) + "1")); resources.Add(new S3DeleteInfo(nameof(DeleteObjects) + "2", "versionnotfound")); await UploadAsync(resources[0].Name).ConfigureAwait(false); await UploadAsync(resources[1].Name).ConfigureAwait(false); DeleteObjectsResponse resp = await ObjectClient.DeleteObjectsAsync(BucketName, resources, req => req.Quiet = false).ConfigureAwait(false); S3DeletedObject delObj = Assert.Single(resp.Deleted); Assert.Equal(resources[0].Name, delObj.ObjectKey); Assert.True(delObj.IsDeleteMarker); Assert.NotEmpty(delObj.DeleteMarkerVersionId); S3DeleteError errorObj = Assert.Single(resp.Errors); Assert.Equal(resources[1].Name, errorObj.ObjectKey); Assert.Equal(resources[1].VersionId, errorObj.VersionId); Assert.Equal(ErrorCode.NoSuchVersion, errorObj.Code); Assert.Equal("The specified version does not exist.", errorObj.Message); }
public void MarshalResponse(IConfig config, DeleteObjectsResponse response, IDictionary <string, string> headers, Stream responseStream) { response.RequestCharged = headers.ContainsKey(AmzHeaders.XAmzRequestCharged); XmlSerializer s = new XmlSerializer(typeof(DeleteResult)); using (XmlTextReader r = new XmlTextReader(responseStream)) { r.Namespaces = false; DeleteResult deleteResult = (DeleteResult)s.Deserialize(r); if (deleteResult.Deleted != null) { response.Deleted = new List <S3DeletedObject>(deleteResult.Deleted.Count); foreach (Deleted deleted in deleteResult.Deleted) { S3DeletedObject s3Deleted = new S3DeletedObject(); s3Deleted.ObjectKey = deleted.Key; s3Deleted.DeleteMarkerVersionId = deleted.DeleteMarkerVersionId; s3Deleted.VersionId = deleted.VersionId; s3Deleted.IsDeleteMarker = deleted.DeleteMarker; response.Deleted.Add(s3Deleted); } } else { response.Deleted = Array.Empty <S3DeletedObject>(); } if (deleteResult.Error != null) { response.Errors = new List <S3DeleteError>(deleteResult.Error.Count); foreach (Error error in deleteResult.Error) { S3DeleteError s3DeleteError = new S3DeleteError(); s3DeleteError.ObjectKey = error.Key; s3DeleteError.VersionId = error.VersionId; s3DeleteError.Code = ValueHelper.ParseEnum <ErrorCode>(error.Code); s3DeleteError.Message = error.Message; response.Errors.Add(s3DeleteError); } } else { response.Errors = Array.Empty <S3DeleteError>(); } } }
public void MarshalResponse(DeleteMultipleObjectsRequest request, DeleteMultipleObjectsResponse response, IDictionary <string, string> headers, Stream responseStream) { XmlSerializer s = new XmlSerializer(typeof(DeleteResult)); using (XmlTextReader r = new XmlTextReader(responseStream)) { r.Namespaces = false; DeleteResult deleteResult = (DeleteResult)s.Deserialize(r); if (deleteResult.Deleted != null) { response.Deleted = new List <S3DeletedObject>(deleteResult.Deleted.Count); foreach (Deleted deleted in deleteResult.Deleted) { S3DeletedObject s3Deleted = new S3DeletedObject(); s3Deleted.Key = deleted.Key; s3Deleted.DeleteMarkerVersionId = deleted.DeleteMarkerVersionId; s3Deleted.VersionId = deleted.VersionId; s3Deleted.DeleteMarker = deleted.DeleteMarker; response.Deleted.Add(s3Deleted); } } else { response.Deleted = Array.Empty <S3DeletedObject>(); } if (deleteResult.Error != null) { response.Errors = new List <S3DeleteError>(deleteResult.Error.Count); foreach (Error error in deleteResult.Error) { S3DeleteError s3DeleteError = new S3DeleteError(); s3DeleteError.Key = error.Key; s3DeleteError.VersionId = error.VersionId; s3DeleteError.Code = error.Code; s3DeleteError.Message = error.Message; response.Errors.Add(s3DeleteError); } } else { response.Errors = Array.Empty <S3DeleteError>(); } } }