Example #1
0
        public async Task <Cotacao> ConsultarCotacao(ConsultaCotacaoArgs args, CancellationToken cancellationToken)
        {
            try
            {
                string URL = MontarURLDeConsultaPorTickerEProduto(args);
                HttpResponseMessage response = await _client.GetAsync(URL, cancellationToken);

                string result = string.Empty;
                result = await response.Content.ReadAsStringAsync();

#warning IMPLEMENTAR REGRA PARA CACHE E RESILIENCIA
                try
                {
                    Meta meta = JsonConvert.DeserializeObject <CotacaoRoot>(result).Chart.Result[0].Meta;
                    if (response.IsSuccessStatusCode && meta != null)
                    {
                        return(new Cotacao(meta.ChartPreviousClose, meta.RegularMarketPrice));
                    }
                }
                catch (Exception)
                {
                    return(new Cotacao());
                }

                return(new Cotacao());
            }
            catch (HttpRequestException)
            {
                throw;
            }
            catch (Exception)
            {
                throw;
            }
        }
Example #2
0
        public async Task <ActionResult> ConsultarCotacao([FromQuery] ConsultaCotacaoArgs args)
        {
            Cotacao cotacao = await _queries.ObterCotacaoPorTicker(args);

            if (cotacao.Preco == 0)
            {
                NotifyError($"O Ativo com Ticker '{args.Ticker}' referente ao Produto '{args.ProdutoDescricao}' não foi localizado");
            }
            return(ResponseBase(cotacao));
        }
Example #3
0
        public string MontarURLDeConsultaPorTickerEProduto(ConsultaCotacaoArgs args)
        {
            string symbol;

            switch (args.ProdutoDescricao.ToUpper())
            {
            case "FII":
            case "AÇÃO": symbol = $"{args.Ticker}.SA"; break;

            default: symbol = args.Ticker; break;
            }

            return($"https://query1.finance.yahoo.com/v8/finance/chart/{symbol}?interval=1d");
        }
Example #4
0
        public async Task <Cotacao> ObterCotacaoPorTicker(ConsultaCotacaoArgs args)
        {
            Cotacao cotacao = await _service.ConsultarCotacao(args, CancellationToken.None);

            return(cotacao);
        }