public static async Task Run(
     [QueueTrigger(QueueNames.DownloadCoursePage, Connection = "AzureWebJobsStorage")] DownloadCourseMessage message,
     [Blob("downloads/course/{WebsiteDomain}{WebsitePath}.html", Connection = "AzureWebJobsStorage")] CloudBlockBlob htmlBlockBlob,
     ILogger logger,
     CancellationToken cancellationToken)
 {
     await Container.Instance.Resolve <DownloadCourseFunction>(logger).Run(message, htmlBlockBlob, cancellationToken);
 }
        private async Task Run(DownloadCourseMessage message, CloudBlockBlob htmlBlockBlob, CancellationToken cancellationToken)
        {
            using (var stream = await _downloader.DownloadAsync(message.WebsiteDomain, message.WebsitePath, cancellationToken)
                                .ConfigureAwait(false))
            {
                using (var ms = new MemoryStream())
                {
                    await stream.CopyToAsync(ms)
                    .ConfigureAwait(false);

                    await _cloudBlockBlobUpdater.UpdateAsync(htmlBlockBlob, ms.ToArray())
                    .ConfigureAwait(false);
                }
            }
        }