public async Task UploadStringAsync(
            string containerName,
            string path,
            string stringToUpload,
            IBlobContainer.UploadStringCompression compression = IBlobContainer.UploadStringCompression.None)
        {
            var account       = CloudStorageAccount.Parse(this.storage);
            var serviceClient = account.CreateCloudBlobClient();
            var container     = serviceClient.GetContainerReference(containerName);
            await container.CreateIfNotExistsAsync();

            var blob = container.GetBlockBlobReference(path);

            if (compression == IBlobContainer.UploadStringCompression.GZip)
            {
                await this.CompressAndUpload(stringToUpload, blob);
            }
            else
            {
                await blob.UploadTextAsync(stringToUpload);
            }
        }
        public async Task <string> ReadBlobAsStringAsync(string containerName, string path, IBlobContainer.UploadStringCompression compression)
        {
            var account       = CloudStorageAccount.Parse(this.storage);
            var serviceClient = account.CreateCloudBlobClient();
            var container     = serviceClient.GetContainerReference(containerName);
            var blob          = container.GetBlockBlobReference(path);

            var readStream = await blob.OpenReadAsync();

            if (compression == IBlobContainer.UploadStringCompression.None)
            {
                var streamReader = new StreamReader(readStream);
                var result       = await streamReader.ReadToEndAsync();

                return(result);
            }

            var outputBytes = new byte[readStream.Length];
            await readStream.ReadAsync(outputBytes);

            var decompressedString = Decompress(outputBytes);

            return(decompressedString);
        }