Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }