private async Task <StockSymbolQuoteDto> GetQuoteFromJsonAsync(string urlApi, string symbol) { StockSymbolQuoteDto dtoResponse = null; using (var response = await _httpClient.GetAsync(urlApi)) { if (response.IsSuccessStatusCode) { var jsonString = await response.Content.ReadAsStringAsync(); var data = JsonConvert.DeserializeObject <StockSymbolQuoteRootDto>(jsonString); dtoResponse = data.Symbols.FirstOrDefault(); } } return(dtoResponse); }
private async Task <StockSymbolQuoteDto> GetQuoteFromCsvAsync(string urlApi, string symbol) { StockSymbolQuoteDto dtoResponse = null; using (var response = await _httpClient.GetAsync(urlApi, HttpCompletionOption.ResponseHeadersRead)) { if (response.IsSuccessStatusCode) { using var stream = await response.Content.ReadAsStreamAsync(); using (var reader = new StreamReader(stream)) using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture)) { var records = new List <StockSymbolQuoteDto>(); csv.Read(); csv.ReadHeader(); while (csv.Read()) { var record = new StockSymbolQuoteDto { Symbol = csv.GetField <string>("Symbol"), Date = csv.GetField <DateTime>("Date"), Time = csv.GetField <TimeSpan>("Time"), Open = csv.GetField <decimal>("Open"), High = csv.GetField <decimal>("High"), Low = csv.GetField <decimal>("Low"), Close = csv.GetField <decimal>("Close"), Volume = csv.GetField <double>("Volume"), }; records.Add(record); } dtoResponse = records.FirstOrDefault(); } } } return(dtoResponse); }