protected async Task <GenerateHtmlResponse> MakeGenerateRequest(GenerateHtmlRequest request) { var client = _factory.CreateClient(); var result = await client.PostAsync($"{_settings.GenerateBaseUrl}/generate", new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json")); var stringResult = await result.Content.ReadAsStringAsync(); return(JsonConvert.DeserializeObject <GenerateHtmlResponse>(stringResult)); }
public async Task <string> GenerateHtml(string customerCode, int productId, string category, int?templateId, int?regionId, SiteMode siteMode, bool forceDownload) { PdfTemplate pdfTemplate; if (templateId.HasValue) { pdfTemplate = await _client.GetProduct <PdfTemplate>(customerCode, templateId.Value, siteMode); } else { pdfTemplate = await _pdfTemplateSelector.GetPdfTemplateForProduct(customerCode, productId, category, siteMode); } if (pdfTemplate == null) { throw new TemplateNotFoundException(); } var productBase = await _client.GetProduct <DpcProductBase>(customerCode, productId, false, siteMode, new[] { "Id", "UpdateDate" }); if (productBase == null) { throw new GetProductJsonException(); } var productDownloadUrl = _client.GetProductJsonDownloadUrl(customerCode, productId, true, siteMode); var request = new GenerateHtmlRequest { TariffData = new GenerateHtmlFileInfo { Id = productId, Timestamp = ConvertToTimestamp(productBase.UpdateDate), DownloadUrl = productDownloadUrl, ForceDownload = forceDownload, SiteMode = siteMode.ToString() }, MapperData = new GenerateHtmlFileInfo { Id = pdfTemplate.PdfScriptMapper.Id, Timestamp = ConvertToTimestamp(pdfTemplate.PdfScriptMapper.Timestamp), DownloadUrl = $"{_settings.DpcStaticFilesScheme}:{pdfTemplate.PdfScriptMapper.PdfScriptMapperFile.AbsoluteUrl}", ForceDownload = forceDownload, SiteMode = siteMode.ToString() }, TemplateData = new GenerateHtmlFileInfo { Id = pdfTemplate.Id, Timestamp = ConvertToTimestamp(pdfTemplate.UpdateDate), DownloadUrl = $"{_settings.DpcStaticFilesScheme}:{pdfTemplate.PdfTemplateFile.AbsoluteUrl}", ForceDownload = forceDownload, SiteMode = siteMode.ToString() }, TemplateEngine = pdfTemplate.PdfTemplateEngine }; var response = await MakeGenerateRequest(request); if (response.Success && !string.IsNullOrWhiteSpace(response.RelativePath)) { var generatedHtml = await GetHtml(response.RelativePath); var replacedHtml = await _regionTagsReplacer.ReplaceTags(customerCode, generatedHtml, productId, siteMode, regionId); return(replacedHtml); } throw new HtmlGenerationException(response.Error?.Message ?? "Unknown error while generating html"); }