Beispiel #1
0
        public async Task <int> ContarBytesPorTextoAsync(string texto)
        {
            Browser _browser;

            await _geradorDeLog.GerarLogAsync($"Iniciando crawler para contagem de bytes.");

            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);

            _browser = await Puppeteer.LaunchAsync(new LaunchOptions
            {
                Headless = true
            });

            try
            {
                using (var paginaBuscada = await _browser.NewPageAsync())
                {
                    await paginaBuscada.GoToAsync($"{SITEWEB}#{texto}");

                    await _geradorDeLog.GerarLogAsync($"Iniciando contagem de bytes.");

                    string valorEmBytesCalculado = await paginaBuscada.EvaluateExpressionAsync <string>("document.getElementById('bytes').textContent");

                    return(int.Parse(valorEmBytesCalculado.Replace("bytes", "")));
                }
            }
            catch (ApplicationException ex)
            {
                await _geradorDeLog.GerarLogAsync($"Erro: {ex.Message}");

                await _geradorDeLog.GerarLogAsync($"Executando estratégia de fallback.");

                return(_contadorDeBytesWebFallback.ContarBytesDoTexto(texto));
            }
        }
Beispiel #2
0
        public async Task <string> Buscar()
        {
            Browser _browse;


            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);

            _browse = await Puppeteer.LaunchAsync(new LaunchOptions
            {
                Headless = true
            });


            using (var page = await _browse.NewPageAsync())
            {
                try
                {
                    await page.GoToAsync(SITEWEB);

                    await _geradorDeLog.GerarLogAsync($"Iniciando crawler para buscar texto.");

                    string textoExtraido = await page.QuerySelectorAsync(".sentence").EvaluateFunctionAsync <string>("_ => _.innerText");

                    return(textoExtraido);
                }
                catch (Exception ex)
                {
                    await _geradorDeLog.GerarLogAsync($"Erro: {ex.Message}");

                    await _geradorDeLog.GerarLogAsync($"Executando estratégia de fallback.");

                    return(await _buscadorDeTextoWebFallback.BuscarTextoAleatorio());
                }
            }
        }
Beispiel #3
0
        private async Task ImprimirRelatorioAsync(AnaliseDto analiseDto, TiposDeRelatorio tiposDeRelatorio)
        {
            await _geradorDeLog.GerarLogAsync("Imprimindo os dados de annálise.");

            if (tiposDeRelatorio == TiposDeRelatorio.Tabela)
            {
                ImprimirTabelaAsync(analiseDto);
            }
            else
            {
                await ImprimirJsonAsync(analiseDto);
            }
        }
Beispiel #4
0
        public async Task <GeradorDeArquivoResposta> ExecutarAsync(GeradorDeArquivoComando comando)
        {
            await _geradorDeLog.GerarLogAsync("Iniciando a gravação do arquivo.");

            var tamanhoBufferValidado = comando.TamanhoDoBufferEmBytes ?? TAMANHODOBUFFEREMBYTESDEFAULT;

            var buffer = new byte[tamanhoBufferValidado * 1024];

            var tamanhoDoTexto = RetornarTamanhoEmBytesDaString(comando.TextoAnalisado);

            string textoIncremental = null;

            var numeroDeIteracoes = 0;

            do
            {
                textoIncremental += comando.TextoAnalisado;

                tamanhoDoTexto = RetornarTamanhoEmBytesDaString(textoIncremental);

                numeroDeIteracoes++;
            } while (tamanhoDoTexto < tamanhoBufferValidado);


            buffer = ASCIIEncoding.Unicode.GetBytes(textoIncremental);

            var nomeDoArquivo = await EscreverArquivo(comando.CaminhoDoArquivo, buffer);

            return(new GeradorDeArquivoResposta(nomeDoArquivo, buffer.Length, comando.CaminhoDoArquivo, numeroDeIteracoes));
        }