Ejemplo n.º 1
0
        private async Task <List <SecuritySymbol> > ObtainSymbolsFromIeXAsync()
        {
            LastUpateCollectionMd lastUpdateDate = null;

            if (symbols != null && symbols.Count >= 100 && (DateTime.Now - lastSymbolUpdate).TotalDays < 1)
            {
                return(symbols);
            }

            lastUpdateDate = GetSymbolsFromDb();
            if (symbols != null && symbols.Count >= 100)
            {
                lastSymbolUpdate = lastUpdateDate.LastUpdate;
                return(symbols);
            }
            if (symbols == null)
            {
                symbols = new List <SecuritySymbol>();
            }
            else
            {
                symbols.Clear();
            }
            var urlToUse  = iexSymbolListURL.Replace(apiKey, _envHandler.GetApiKey(iexTradingProvider));
            var url1ToUse = iexOTCSymbolListURL.Replace(apiKey, _envHandler.GetApiKey(iexTradingProvider));

            try
            {
                using (var httpClient = new HttpClient())
                {
                    string data = "{}";
                    data = await httpClient.GetStringAsync(urlToUse);

                    var settings = new JsonSerializerSettings
                    {
                        NullValueHandling     = NullValueHandling.Ignore,
                        MissingMemberHandling = MissingMemberHandling.Ignore
                    };
                    var symbols0 = JsonConvert.DeserializeObject <IEnumerable <SecuritySymbol> >(data, settings).ToList();
                    symbols.AddRange(symbols0);
                    var data1 = "{}";
                    data1 = await httpClient.GetStringAsync(url1ToUse);

                    var symbols1 = JsonConvert.DeserializeObject <IEnumerable <SecuritySymbol> >(data1, settings).ToList();
                    symbols.AddRange(symbols1);
                    lastSymbolUpdate = DateTime.Now;
                    lastUpdateDate   = await PopulateSymbolsToDbAsync(lastUpdateDate);

                    return(symbols);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("Error while getting data from IEX trading");
                _logger.LogError(ex.Message);
                return(new List <SecuritySymbol>());
            }
        }
Ejemplo n.º 2
0
        private LastUpateCollectionMd GetSymbolsFromDb()
        {
            LastUpateCollectionMd lastUpdateDate = _connectionHandlerLU.Get(r => r.CollectionName.Equals(SecSymobls)).FirstOrDefault();

            if (lastUpdateDate != null && lastUpdateDate.LastUpdate >= DateTime.Now.AddDays(-1))
            {
                var symbolsMd = _connectionHandlerSS.Get().ToList();
                if (symbolsMd != null && symbolsMd.Any())
                {
                    symbols = _mapper.Map <List <SecuritySymbol> >(symbolsMd);
                }
            }
            return(lastUpdateDate);
        }
Ejemplo n.º 3
0
        private async Task <LastUpateCollectionMd> PopulateSymbolsToDbAsync(LastUpateCollectionMd lastUpdateDate)
        {
            var symbolsMd    = _mapper.Map <List <SecuritySymbolMd> >(symbols);
            var updateResult = false;

            if (lastUpdateDate == null)
            {
                lastUpdateDate = new LastUpateCollectionMd
                {
                    CollectionName = SecSymobls,
                    LastUpdate     = DateTime.Now
                };
                lastUpdateDate = await _connectionHandlerLU.Create(lastUpdateDate);

                if (lastUpdateDate.Id.IsNullOrWhiteSpace())
                {
                    _logger.LogCritical("Could not insert record to collection LastUpdate");
                }
            }
            else
            {
                lastUpdateDate.LastUpdate = DateTime.Now;
                updateResult = await _connectionHandlerLU.Update(lastUpdateDate.Id, lastUpdateDate);

                if (!updateResult)
                {
                    _logger.LogCritical("Could not update record in LastUpdate");
                }
            }
            updateResult = await _connectionHandlerSS.RemoveAll();

            if (!updateResult)
            {
                _logger.LogCritical("Could delete all records in SecuritySymbol");
            }
            updateResult = await _connectionHandlerSS.Create(symbolsMd);

            if (!updateResult)
            {
                _logger.LogCritical("Could insert records in SecuritySymbol");
            }
            return(lastUpdateDate);
        }