private static DollarData convertjsonToObject(string jsonDollarData) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DollarData)); MemoryStream memStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonDollarData)); DollarData dollaDataObj = (DollarData)serializer.ReadObject(memStream); return dollaDataObj; }
private static string convertObjectToJson(DollarData objDollarData) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(DollarData)); MemoryStream memStream = new MemoryStream(); ser.WriteObject(memStream, objDollarData); string jsonOutput = Encoding.UTF8.GetString(memStream.ToArray()); memStream.Close(); return jsonOutput; }
private static List<DollarData> getAtualValuesFromSite() { const string url = "https://valor.globo.com/valor-data/"; var browser = new HtmlWeb(); HtmlDocument webPage = new HtmlDocument(); try { webPage = browser.Load(url); } catch (WebException error) { List<string> errorToPrint = new List<string>() { ("Erro ao acessar a url [" + url + "]." + "Erro: " + error.Message) }; File.AppendAllLines((Directory.GetCurrentDirectory() + "\\" + DateTime.Now.ToString("yyyyMMdd") + ".log"), errorToPrint); Console.WriteLine("Erro ao acessar o site para coleta das informacoes: " + errorToPrint[0]); Console.WriteLine("Saindo da aplicacao em 15 segundos..."); Thread.Sleep(15000); Environment.Exit(0); } List<DollarData> allDollarCotations = new List<DollarData>(); //Obtendo os nodes div referente às moedas List<HtmlNode> divsCurrencies = webPage.DocumentNode.Descendants("div").Where(selectedNodes => selectedNodes.GetAttributeValue("class", "").Equals("cell large-auto data-cotacao__ticker")).ToList(); //percorrendo a div internamente, para coletar seu respectivo valor e relação anterior (porcentagem subida/descida) foreach (var atualDiv in divsCurrencies) { if (atualDiv.InnerText.Contains("Dólar")) { DollarData dollarUniqueCotation = new DollarData { AtualValue = (atualDiv.Descendants("div").Where(selectedNodes => selectedNodes.GetAttributeValue("class", "").Contains("cotacao__ticker_quote")).First().InnerText).Replace(",", "."), AtualPercent = atualDiv.Descendants("div").Where(selectedNodes => selectedNodes.GetAttributeValue("class", "").Contains("cotacao__ticker_percentage")).First().InnerText, Date = DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss"), TypeName = atualDiv.Descendants("div").Where(selectedNodes => selectedNodes.GetAttributeValue("class", "").Contains("data-cotacao__ticker_name")).First().InnerText }; allDollarCotations.Add(dollarUniqueCotation); } } return allDollarCotations; }
private static void printDollarDataObject(DollarData obj,string fonte) { if (!fonte.Equals("db")) { Console.Write("\nTipo de Cotacao: " + obj.TypeName + "\n" + "Valor Atual: " + obj.AtualValue + "\n" + "Alta/baixa %: " + obj.AtualPercent + "\n" + "Data do Registro: " + obj.Date + "\n" + "Fonte do Dado: Consulta Atual" + "\n" + "----------------------------------------------------------------------"); } else { Console.Write("\nTipo de Cotacao: " + obj.TypeName + "\n" + "Valor Atual: " + obj.AtualValue + "\n" + "Alta/baixa %: " + obj.AtualPercent + "\n" + "Data do Registro: " + obj.Date + "\n" + "Fonte do Dado: Registro do Banco, pois o site ainda nao teve alteração de preco na cotacao (verificado as " + DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss") + ")" + "\n" + "----------------------------------------------------------------------"); } }