private static async Task RunCloudBlobExtensionsTests(IStorageAccount storageAccount, string containerName, CancellationToken cancellationToken) { var blobClient = storageAccount.CreateCloudBlobClient(); var container = blobClient.GetContainerReference(containerName); await container.CreateIfNotExistsAsync().ConfigureAwait(false); var blob1 = container.GetBlockBlobReference("test1.txt"); var leaseId1 = (await blob1.ExistsAsync(null, null, cancellationToken).ConfigureAwait(false) ? await blob1.TryAcquireLeaseAsync(null, 3, cancellationToken).ConfigureAwait(false) : null); await blob1.UploadTextAsync("Hello World", leaseId1, cancellationToken); await blob1.UploadTextAsync("qwerty", leaseId1, cancellationToken); await blob1.AppendTextAsync("azerty", leaseId1, cancellationToken); if (!string.IsNullOrEmpty(leaseId1)) { await blob1.ReleaseLeaseAsync(leaseId1, cancellationToken); } var content1 = await blob1.DownloadTextAsync(cancellationToken).ConfigureAwait(false); Console.WriteLine(content1); var blob2 = container.GetPageBlobReference("test2.txt"); var leaseId2 = (await blob2.ExistsAsync(null, null, cancellationToken).ConfigureAwait(false) ? await blob2.TryAcquireLeaseAsync(null, 3, cancellationToken).ConfigureAwait(false) : null); await blob2.UploadTextAsync(new string('A', 512), leaseId2, cancellationToken).ConfigureAwait(false); await blob2.UploadTextAsync(new string('B', 512), leaseId2, cancellationToken).ConfigureAwait(false); await blob2.AppendTextAsync(new string('C', 512), leaseId2, cancellationToken).ConfigureAwait(false); if (!string.IsNullOrEmpty(leaseId2)) { await blob2.ReleaseLeaseAsync(leaseId2, cancellationToken).ConfigureAwait(false); } var content2 = await blob2.DownloadTextAsync(cancellationToken).ConfigureAwait(false); Console.WriteLine(content2); // Unfortunately, the emulator does not support CloudAppendBlob //var blob3 = container.GetAppendBlobReference("test3.txt"); //blob3.UploadTextAsync("Hello World", null, cancellationToken).Wait(); //blob3.UploadTextAsync("\r\nqwerty", null, cancellationToken).Wait(); //blob3.AppendTextAsync("azerty", null, cancellationToken).Wait(); //var task3 = blob3.DownloadTextAsync(cancellationToken); //task3.Wait(); //var content3 = task3.Result; //Console.WriteLine(content3); }
public BlobManager(string containerName, IStorageAccount storageAccount, BlobContainerPublicAccessType accessType = BlobContainerPublicAccessType.Off) { if (string.IsNullOrWhiteSpace(containerName)) { throw new ArgumentNullException(nameof(containerName)); } if (storageAccount == null) { throw new ArgumentNullException(nameof(storageAccount)); } _storageAccount = storageAccount; _containerName = containerName; _blobClient = _storageAccount.CreateCloudBlobClient(); _blobContainer = _blobClient.GetContainerReference(_containerName); _blobContainer.CreateIfNotExistsAsync(accessType, null, null, CancellationToken.None).Wait(); }
/// <summary> /// For unit testing /// </summary> /// <param name="queueName"></param> public QueueManager(string queueName, IStorageAccount storageAccount) { if (string.IsNullOrWhiteSpace(queueName)) { throw new ArgumentNullException(nameof(queueName)); } if (storageAccount == null) { throw new ArgumentNullException(nameof(storageAccount)); } _storageAccount = storageAccount; _queueName = queueName; _queue = storageAccount.CreateCloudQueueClient().GetQueueReference(queueName); _blobContainer = storageAccount.CreateCloudBlobClient().GetContainerReference("oversizedqueuemessages"); var tasks = new List <Task>(); tasks.Add(_queue.CreateIfNotExistsAsync(null, null, CancellationToken.None)); tasks.Add(_blobContainer.CreateIfNotExistsAsync(BlobContainerPublicAccessType.Off, null, null, CancellationToken.None)); Task.WaitAll(tasks.ToArray()); }