コード例 #1
0
        public async Task <DomResultItem[]> GetDomForAsync(string relativeAddress, CancellationToken ct, params string[] args)
        {
            var htmlRequest = new HtmlRequest(relativeAddress, args);

            try
            {
                await buffer.SendAsync(htmlRequest);

                string content = await htmlRequest.Task.ConfigureAwait(false);

                logger.LogInformation($"Received HTML for {htmlRequest.RelativeAddress}");
                var items = ParseResult(content);
                logger.LogInformation($"Parsed HTML for {htmlRequest.RelativeAddress}");
                return(items);
            }
            catch (OperationCanceledException)
            {
                logger.LogWarning($"Html retrieval for {htmlRequest.RelativeAddress} was cancelled");
                return(new DomResultItem[0]);
            }
            catch (Exception ex)
            {
                logger.LogError(ex, $"Html retrieval for {htmlRequest.RelativeAddress} failed");
                return(new DomResultItem[0]);
            }
        }
コード例 #2
0
        public async Task <IActionResult> TestTemplate()
        {
            try
            {
                // *************************************************************
                // Create output using json and mustache template
                // *************************************************************
                HtmlRequest request = new HtmlRequest()
                {
                    JsonString  = "{\"title\": \"Sample Template\", \"name\": \"McTesty\"}",
                    RenderJsUrl = _configuration.GetSection("Constants").GetSection("RenderJsUrl").Value,
                    Template    = _configuration.GetSection("Constants").GetSection("SampleTemplate").Value
                };

                string result = await TemplateHelper.RenderDocument(_nodeServices, request);

                // *************************************************************
                // Convert results to Pdf
                // *************************************************************
                PdfRequest pdfRequest = new PdfRequest()
                {
                    Html        = "<h1>" + result + "<h1>",
                    PdfFileName = "TestTemplate"
                };

                byte[] pdfResponse = await PdfDocument.BuildPdf(_nodeServices, pdfRequest);

                return(File(pdfResponse, "application/pdf"));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
コード例 #3
0
ファイル: PDFController.cs プロジェクト: seamus-oconnor/hets
        public async Task <IActionResult> GetSeniorityListPdf([FromBody] string seniorityListJson, [FromRoute] string name)
        {
            try
            {
                name = CleanName(name);

                string fileName = name + ".pdf";
                _logger.LogInformation("GetSeniorityListPdf [FileName: {0}]", fileName);

                // *************************************************************
                // Create output using json and mustache template
                // *************************************************************
                if (seniorityListJson == "[]")
                {
                    seniorityListJson = @"{""Empty"": ""true""}";
                }

                HtmlRequest request = new HtmlRequest()
                {
                    JsonString  = seniorityListJson,
                    RenderJsUrl = _configuration.GetSection("Constants").GetSection("RenderJsUrl").Value,
                    Template    = _configuration.GetSection("Constants").GetSection("SeniorityListTemplate").Value
                };

                _logger.LogInformation("GetSeniorityListPdf [FileName: {0}] - Render Html", fileName);
                string result = await TemplateHelper.RenderDocument(_nodeServices, request);

                _logger.LogInformation("GetSeniorityListPdf [FileName: {0}] - Html Length: {1}", fileName, result.Length);

                // *************************************************************
                // Convert results to Pdf
                // *************************************************************
                PdfRequest pdfRequest = new PdfRequest()
                {
                    Html        = result,
                    RenderJsUrl = _configuration.GetSection("Constants").GetSection("PdfJsUrl").Value,
                    PdfFileName = fileName
                };

                _logger.LogInformation("GetSeniorityListPdf [FileName: {0}] - Gen Pdf", fileName);
                byte[] pdfResponseBytes = await PdfDocument.BuildPdf(_nodeServices, pdfRequest, true);

                // convert to string and log
                string pdfResponse = System.Text.Encoding.Default.GetString(pdfResponseBytes);
                _logger.LogInformation("GetSeniorityListPdf [FileName: {0}] - Pdf Length: {1}", fileName, pdfResponse.Length);

                _logger.LogInformation("GetSeniorityListPdf [FileName: {0}] - Done", fileName);
                return(File(pdfResponseBytes, "application/pdf", fileName));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
コード例 #4
0
        /// <summary>
        /// Starting point in application
        /// </summary>
        /// <param name="ravenRageDatabase">Raven database service.</param>
        public RageClient(IRageDatabaseServerService ravenRageDatabase, IOptions <AppSettings> appSettings, ILogger <RageClient> logger, HtmlRequest client)
        {
            _logger            = logger;
            _ravenRageDatabase = ravenRageDatabase;
            _client            = client;
            var clientSettings = appSettings.Value.Configuration;

            DisplayInformation = clientSettings.DisplayInformation;
            ServersToDisplayInformationAbout = clientSettings.ServersToDisplayInformationAbout;

            Interval        = clientSettings.Interval;
            _timer          = new Timer(Interval);
            _timer.Elapsed += TimerElapsedAsync;
            // GetAllServersAsync();
            //GetPeakPlayersForServer("51.68.154.84:22005");
            //GetPeakPlayersForServerInDateRange("51.68.154.84:22005");
            GetPeakPlayersForServerInDay("51.68.154.84:22005");
        }
コード例 #5
0
        public void download(String path)
        {
            String name;
            String page = "";
            String ext;

            if (max_page >= 100)
            {
                page = absolute_number(num_page, "000");
            }
            else if (max_page >= 10)
            {
                page = absolute_number(num_page, "00");
            }
            else if (max_page < 1000)
            {
                page = absolute_number(num_page, "0");
            }

            if (is_chapter)
            {
                name = "chapter " + chapter + " page " + page;
            }
            else
            {
                name = "page " + page;
            }

            if (link.IndexOf("?token") != -1)
            {
                ext = link.Substring(link.LastIndexOf('.'), link.IndexOf("?token") - link.LastIndexOf('.'));
            }
            else
            {
                ext = link.Substring(link.LastIndexOf('.'));
            }

            HtmlRequest.save_image(link, path + name + ext);
        }
コード例 #6
0
 public Task <Stream> HtmlToPdfAsync(HtmlRequest request, CancellationToken cancelToken = default)
 => ExecuteRequestAsync(request, cancelToken);
コード例 #7
0
 public ServerListViewComponent(HtmlRequest request)
 {
     _request = request;
 }
コード例 #8
0
 public DocumentBuilder(HtmlRequest request)
 {
     this.Request = request ?? throw new ArgumentNullException(nameof(request));
     this.Request.Content ??= new FullDocument();
 }