Beispiel #1
0
        private async Task ProcessPageByIdAsync(string pageId, ExpandoObject dataModel)
        {
            await LoggerService.WriteLogMessage($"{DateTime.Now.ToLongTimeString()}: Started precessing of page \"{pageId}\"");

            var page = await PageModelReaderService.LoadContentByIdAsync(pageId).ConfigureAwait(false);

            var html = await TemplateService.RenderTemplateAsync(page.Content, page, dataModel);

            html = await MarkupService.RenderMarkupAsync(html).ConfigureAwait(false);

            page.Content = html;

            var template = await TemplateReaderService.LoadContentByIdAsync(page.TemplateId).ConfigureAwait(false);

            html = await TemplateService.RenderTemplateAsync(template.Template, page, dataModel).ConfigureAwait(false);

            html = await HtmlMinificationService.CompressHtmlAsync(html).ConfigureAwait(false);

            var result = new TextContentModel();

            result.Id         = page.Id;
            result.ContentRaw = html;

            await PageModelWriterService.SaveContentAsync(page.Url, result).ConfigureAwait(false);

            await LoggerService.WriteLogMessage($"{DateTime.Now.ToLongTimeString()}: Finished page precessing \"{pageId}\"");
        }
        public async Task RenderProjectAsync()
        {
            await CleanOutputAsync();

            var tasksGroupContent = Task.Run(async() =>
            {
                var dataModel = await DataService.GetDataModelAsync();

                var pages     = await PageModelReaderService.LoadContentsIdsAsync();
                var pageTasks = pages.Select(pageId => ProcessPageByIdAsync(pageId, dataModel)).ToList();

                await Task.WhenAll(pageTasks).ConfigureAwait(false);
            });

            var tasksGroupAssets = Task.Run(async() =>
            {
                var assets = await AssetsReaderService.LoadContentsIdsAsync();

                var tasks = assets.Select(CopyAssetByIdAsync).ToList();

                await Task.WhenAll(tasks).ConfigureAwait(false);
            });

            await Task.WhenAll(tasksGroupContent, tasksGroupAssets).ConfigureAwait(false);
        }