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); } }
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); }