SamplesV1/ADFSecurePublish/AdfKeyVaultDeployment/BlobUtilities.cs (58 lines of code) (raw):

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.WindowsAzure.Storage; using Microsoft.WindowsAzure.Storage.Blob; namespace Microsoft.ADF.Deployment.AdfKeyVaultDeployment { public class BlobUtilities : IBlobUtilities { private ILogger logger; public BlobUtilities(ILogger logger) { this.logger = logger; } /// <summary> /// Uploads the file to blob storage. /// </summary> /// <param name="localFilePath">The local file path.</param> /// <param name="connectionString">The connection string.</param> /// <param name="folderPath">The folder path.</param> public async Task<bool> UploadFile(string localFilePath, string connectionString, string folderPath) { bool result = true; try { var blockBlob = GetCloudBlockBlob(Path.GetFileName(localFilePath), connectionString, folderPath); await blockBlob.UploadFromFileAsync(localFilePath, FileMode.Open); logger.Write($"'{localFilePath}' uploaded to blob sucessfully", "Green"); } catch (Exception e) { logger.Write($"Failed to upload {localFilePath} to blob. Error: {e.Message}", "Red"); logger.WriteError(e); result = false; } return result; } /// <summary> /// Gets the cloud block blob. /// </summary> /// <param name="fileName">Name of the file.</param> /// <param name="connectionString">The connection string.</param> /// <param name="folderPath">The folder path.</param> public CloudBlockBlob GetCloudBlockBlob(string fileName, string connectionString, string folderPath) { var container = GetCloudBlobContainer(connectionString, folderPath); //Create a new container, if it does not exist container.CreateIfNotExists(); // Get the block blob CloudBlockBlob blockBlob = container.GetBlockBlobReference(fileName); return blockBlob; } /// <summary> /// Gets the cloud blob container. /// </summary> /// <param name="connectionString">The connection string.</param> /// <param name="folderPath">The folder path.</param> private CloudBlobContainer GetCloudBlobContainer(string connectionString, string folderPath) { CloudStorageAccount inputStorageAccount; try { inputStorageAccount = CloudStorageAccount.Parse(connectionString); } catch { throw new Exception("The connection string is not in the correct format."); } CloudBlobClient blobClient = inputStorageAccount.CreateCloudBlobClient(); CloudBlobContainer container = blobClient.GetContainerReference(folderPath); return container; } } }