コード例 #1
0
        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;

        }
コード例 #2
0
        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;
        }
コード例 #3
0
        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;
        }
コード例 #4
0
        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" +
                                  "----------------------------------------------------------------------");

            }
        }