public void TestCheckContentMD5() { long fileSize = 10 * 1024 * 1024; string wrongMD5 = "wrongMD5"; string checkWrongMD5File = "checkWrongMD5File"; string notCheckWrongMD5File = "notCheckWrongMD5File"; string checkCorrectMD5File = "checkCorrectMD5File"; string notCheckCorrectMD5File = "notCheckCorrectMD5File"; DMLibDataInfo sourceDataInfo = new DMLibDataInfo(string.Empty); DMLibDataHelper.AddOneFileInBytes(sourceDataInfo.RootNode, checkWrongMD5File, fileSize); FileNode tmpFileNode = sourceDataInfo.RootNode.GetFileNode(checkWrongMD5File); tmpFileNode.MD5 = wrongMD5; DMLibDataHelper.AddOneFileInBytes(sourceDataInfo.RootNode, notCheckWrongMD5File, fileSize); tmpFileNode = sourceDataInfo.RootNode.GetFileNode(notCheckWrongMD5File); tmpFileNode.MD5 = wrongMD5; DMLibDataHelper.AddOneFileInBytes(sourceDataInfo.RootNode, checkCorrectMD5File, fileSize); DMLibDataHelper.AddOneFileInBytes(sourceDataInfo.RootNode, notCheckCorrectMD5File, fileSize); var options = new TestExecutionOptions<DMLibDataInfo>(); options.TransferItemModifier = (fileNode, transferItem) => { string fileName = fileNode.Name; DownloadOptions downloadOptions = new DownloadOptions(); if (fileName.Equals(checkWrongMD5File) || fileName.Equals(checkCorrectMD5File)) { downloadOptions.DisableContentMD5Validation = false; } else if (fileName.Equals(notCheckWrongMD5File) || fileName.Equals(notCheckCorrectMD5File)) { downloadOptions.DisableContentMD5Validation = true; } transferItem.Options = downloadOptions; }; var result = this.ExecuteTestCase(sourceDataInfo, options); Test.Assert(result.Exceptions.Count == 1, "Verify there's one exception."); Exception exception = result.Exceptions[0]; Test.Assert(exception is InvalidOperationException, "Verify it's an invalid operation exception."); VerificationHelper.VerifyExceptionErrorMessage(exception, "The MD5 hash calculated from the downloaded data does not match the MD5 hash stored", checkWrongMD5File); }
private static Task DownloadInternalAsync(TransferLocation sourceLocation, TransferLocation destLocation, DownloadOptions options, TransferContext context, CancellationToken cancellationToken) { if (options != null) { sourceLocation.AccessCondition = options.SourceAccessCondition; } Transfer transfer = CreateSingleObjectTransfer(sourceLocation, destLocation, TransferMethod.SyncCopy, context); return DoTransfer(transfer, cancellationToken); }
public virtual Task DownloadAsync(CloudBlob sourceBlob, string destPath, DownloadOptions options, TransferContext context, CancellationToken cancellationToken) { throw new NotImplementedException(); }
/// <summary> /// Download an Azure file from Azure File Storage. /// </summary> /// <param name="sourceFile">The <see cref="CloudFile"/> that is the source Azure file.</param> /// <param name="destStream">A <see cref="System.IO.Stream"/> object representing the destination stream.</param> /// <param name="options">A <see cref="DownloadOptions"/> object that specifies additional options for the operation.</param> /// <param name="context">A <see cref="TransferContext"/> object that represents the context for the current operation.</param> /// <returns>A <see cref="Task"/> object that represents the asynchronous operation.</returns> public static Task DownloadAsync(CloudFile sourceFile, Stream destStream, DownloadOptions options, TransferContext context) { return DownloadAsync(sourceFile, destStream, options, context, CancellationToken.None); }
/// <summary> /// Download an Azure file from Azure File Storage. /// </summary> /// <param name="sourceFile">The <see cref="CloudFile"/> that is the source Azure file.</param> /// <param name="destStream">A <see cref="System.IO.Stream"/> object representing the destination stream.</param> /// <param name="options">A <see cref="DownloadOptions"/> object that specifies additional options for the operation.</param> /// <param name="context">A <see cref="TransferContext"/> object that represents the context for the current operation.</param> /// <param name="cancellationToken">A <see cref="CancellationToken"/> object to observe while waiting for a task to complete.</param> /// <returns>A <see cref="Task"/> object that represents the asynchronous operation.</returns> public static Task DownloadAsync(CloudFile sourceFile, Stream destStream, DownloadOptions options, TransferContext context, CancellationToken cancellationToken) { TransferLocation sourceLocation = new TransferLocation(sourceFile); TransferLocation destLocation = new TransferLocation(destStream); if (options != null) { FileRequestOptions requestOptions = Transfer_RequestOptions.DefaultFileRequestOptions; requestOptions.DisableContentMD5Validation = options.DisableContentMD5Validation; sourceLocation.RequestOptions = requestOptions; } return DownloadInternalAsync(sourceLocation, destLocation, options, context, cancellationToken); }
/// <summary> /// Download an Azure blob from Azure Blob Storage. /// </summary> /// <param name="sourceBlob">The <see cref="CloudBlob"/> that is the source Azure blob.</param> /// <param name="destPath">Path to the destination file.</param> /// <param name="options">A <see cref="DownloadOptions"/> object that specifies additional options for the operation.</param> /// <param name="context">A <see cref="TransferContext"/> object that represents the context for the current operation.</param> /// <param name="cancellationToken">A <see cref="CancellationToken"/> object to observe while waiting for a task to complete.</param> /// <returns>A <see cref="Task"/> object that represents the asynchronous operation.</returns> public static Task DownloadAsync(CloudBlob sourceBlob, string destPath, DownloadOptions options, TransferContext context, CancellationToken cancellationToken) { TransferLocation sourceLocation = new TransferLocation(sourceBlob); TransferLocation destLocation = new TransferLocation(destPath); if (options != null) { BlobRequestOptions requestOptions = Transfer_RequestOptions.DefaultBlobRequestOptions; requestOptions.DisableContentMD5Validation = options.DisableContentMD5Validation; sourceLocation.RequestOptions = requestOptions; } return DownloadInternalAsync(sourceLocation, destLocation, options, context, cancellationToken); }
/// <summary> /// Download an Azure blob from Azure Blob Storage. /// </summary> /// <param name="sourceBlob">The <see cref="CloudBlob"/> that is the source Azure blob.</param> /// <param name="destPath">Path to the destination file.</param> /// <param name="options">A <see cref="DownloadOptions"/> object that specifies additional options for the operation.</param> /// <param name="context">A <see cref="TransferContext"/> object that represents the context for the current operation.</param> /// <returns>A <see cref="Task"/> object that represents the asynchronous operation.</returns> public static Task DownloadAsync(CloudBlob sourceBlob, string destPath, DownloadOptions options, TransferContext context) { return DownloadAsync(sourceBlob, destPath, options, context, CancellationToken.None); }
/// <summary> /// Download an Azure blob from Azure Blob Storage. /// </summary> /// <param name="sourceBlob">The Microsoft.WindowsAzure.Storage.Blob.CloudBlob that is the source Azure blob.</param> /// <param name="destPath">Path to the destination file.</param> /// <param name="options">A Microsoft.WindowsAzure.Storage.DataMovement.DownloadOptions object that specifies /// additional options for the operation.</param> /// <param name="context">A Microsoft.WindowsAzure.Storage.DataMovement.TransferContext object that represents /// the context for the current operation.</param> /// <param name="cancellationToken">A System.Threading.CancellationToken object to observe while waiting for a task /// to complete.</param> /// <returns>A System.Threading.Tasks.Task object that represents the asynchronous operation.</returns> public Task DownloadAsync(CloudBlob sourceBlob, string destPath, DownloadOptions options, TransferContext context, CancellationToken cancellationToken) { return TransferManager.DownloadAsync(sourceBlob, destPath, options, context, cancellationToken); }
/// <summary> /// Download an Azure file from Azure File Storage. /// </summary> /// <param name="sourceFile">The <see cref="CloudFile"/> that is the source Azure file.</param> /// <param name="destPath">Path to the destination file.</param> /// <param name="options">A <see cref="DownloadOptions"/> object that specifies additional options for the operation.</param> /// <param name="context">A <see cref="TransferContext"/> object that represents the context for the current operation.</param> /// <param name="cancellationToken">A <see cref="CancellationToken"/> object to observe while waiting for a task to complete.</param> /// <returns>A <see cref="Task"/> object that represents the asynchronous operation.</returns> public static Task DownloadAsync(CloudFile sourceFile, string destPath, DownloadOptions options, TransferContext context, CancellationToken cancellationToken) { AzureFileLocation sourceLocation = new AzureFileLocation(sourceFile); FileLocation destLocation = new FileLocation(destPath); if (options != null) { sourceLocation.AccessCondition = options.SourceAccessCondition; FileRequestOptions requestOptions = Transfer_RequestOptions.DefaultFileRequestOptions; requestOptions.DisableContentMD5Validation = options.DisableContentMD5Validation; sourceLocation.FileRequestOptions = requestOptions; } return DownloadInternalAsync(sourceLocation, destLocation, context, cancellationToken); }
/// <summary> /// Download an Azure blob from Azure Blob Storage. /// </summary> /// <param name="sourceBlob">The <see cref="CloudBlob"/> that is the source Azure blob.</param> /// <param name="destStream">A <see cref="System.IO.Stream"/> object representing the destination stream.</param> /// <param name="options">A <see cref="DownloadOptions"/> object that specifies additional options for the operation.</param> /// <param name="context">A <see cref="TransferContext"/> object that represents the context for the current operation.</param> /// <param name="cancellationToken">A <see cref="CancellationToken"/> object to observe while waiting for a task to complete.</param> /// <returns>A <see cref="Task"/> object that represents the asynchronous operation.</returns> public static Task DownloadAsync(CloudBlob sourceBlob, Stream destStream, DownloadOptions options, TransferContext context, CancellationToken cancellationToken) { AzureBlobLocation sourceLocation = new AzureBlobLocation(sourceBlob); StreamLocation destLocation = new StreamLocation(destStream); if (options != null) { sourceLocation.AccessCondition = options.SourceAccessCondition; BlobRequestOptions requestOptions = Transfer_RequestOptions.DefaultBlobRequestOptions; requestOptions.DisableContentMD5Validation = options.DisableContentMD5Validation; sourceLocation.BlobRequestOptions = requestOptions; } return DownloadInternalAsync(sourceLocation, destLocation, context, cancellationToken); }