예제 #1
0
        public static void ConvertFile(string sourceUrl, string targetPath)
        {
            IDataInterpreter dataInterpreter = new MinhaCDN();
            IDataReformat    dataReformat    = new Agora();

            string downloadPath = Path.ChangeExtension(targetPath, "tmp");

            try
            {
                //Primeiro, pegamos o arquivo da origem (download)
                DownloadFile(sourceUrl, downloadPath);

                //Vamos agora abrir o arquivo e deixá-lo em memória
                string fileContent = OpenFileContent(downloadPath);

                //Vamos interpretar o arquivo, pegando todos os eventos que encontrarmos
                List <DataEvent> dataEvents = dataInterpreter.InterpretData(fileContent);

                //E com os eventos, geramos a saída no formato que queremos
                string output = dataReformat.ReformatData(dataEvents);

                //Por último, flush nos dados
                SaveBufferToFile(output, targetPath);
            }
            catch (Exception e)
            {
                Console.WriteLine("Erro ao converter dados: " + e.Message);
            }
        }
예제 #2
0
        public List <MinhaCDN> ReturnListMinhaCDN()
        {
            var fileText = requestFileMinhaCDN.ToString();
            var records  = fileText.ToString().Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries).ToList();

            List <MinhaCDN> listaMinhaCDN = new List <MinhaCDN>();

            foreach (var line in records)
            {
                MinhaCDN formato      = new MinhaCDN();
                var      propriedades = line.Split('|').ToList();
                formato.ResponseSize = Convert.ToInt32(propriedades.ElementAt(0));
                formato.StatusCode   = Convert.ToInt32(propriedades.ElementAt(1));
                formato.CacheSatus   = propriedades.ElementAt(2);
                formato.HttpMethod   = propriedades.ElementAt(3).Split(' ').ElementAt(0).Replace("\"", "");
                formato.UriPath      = propriedades.ElementAt(3).Split(' ').ElementAt(1).Replace("\"", "");

                var numberDecimal = Convert.ToDecimal(propriedades.ElementAt(4).Replace(".", ","));
                formato.TimeTaken = Convert.ToInt32(numberDecimal);
                formato.Provider  = "MINHA CDN";

                listaMinhaCDN.Add(formato);
            }
            return(listaMinhaCDN);
        }
        public void Teste_QuebraDeDadosDoArquivoMinhaCDNEmLista()
        {
            string           linkTest         = "https://s3.amazonaws.com/uux-itaas-static/minha-cdn-logs/input-01.txt";
            MinhaCDNBusiness minhaCDNBusiness = new MinhaCDNBusiness(linkTest);

            MinhaCDN        formato;
            List <MinhaCDN> resultadoEsperado = new List <MinhaCDN>();

            #region dados de teste
            formato              = new MinhaCDN();
            formato.CacheSatus   = "HIT";
            formato.HttpMethod   = "GET";
            formato.Provider     = "MINHA CDN";
            formato.ResponseSize = 312;
            formato.StatusCode   = 200;
            formato.TimeTaken    = 100;
            formato.UriPath      = "/robots.txt";
            resultadoEsperado.Add(formato);

            formato              = new MinhaCDN();
            formato.CacheSatus   = "MISS";
            formato.HttpMethod   = "POST";
            formato.Provider     = "MINHA CDN";
            formato.ResponseSize = 101;
            formato.StatusCode   = 200;
            formato.TimeTaken    = 319;
            formato.UriPath      = "/myImages";
            resultadoEsperado.Add(formato);

            formato              = new MinhaCDN();
            formato.CacheSatus   = "MISS";
            formato.HttpMethod   = "GET";
            formato.Provider     = "MINHA CDN";
            formato.ResponseSize = 199;
            formato.StatusCode   = 404;
            formato.TimeTaken    = 143;
            formato.UriPath      = "/not-found";
            resultadoEsperado.Add(formato);

            formato              = new MinhaCDN();
            formato.CacheSatus   = "INVALIDATE";
            formato.HttpMethod   = "GET";
            formato.Provider     = "MINHA CDN";
            formato.ResponseSize = 312;
            formato.StatusCode   = 200;
            formato.TimeTaken    = 245;
            formato.UriPath      = "/robots.txt";
            resultadoEsperado.Add(formato);
            #endregion

            var resultadoObtido = minhaCDNBusiness.ReturnListMinhaCDN();
            CollectionAssert.AllItemsAreNotNull(resultadoObtido);
        }