예제 #1
0
        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);
        }
예제 #2
0
        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();
        }
예제 #3
0
        /// <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());
        }