protected override async Task <CurrencyHistoryData> LoadDataAsync(string secId, DateTime day) { var bg = await _staticDataService.GetBoardgroup(secId); if (bg == null) { return(null); } string date = day.ToString("yyyy-MM-dd"); var url = _config.PrepareUrl(bg.Id, secId, new Dictionary <string, string> { ["sort_order"] = "desc", ["till"] = date, ["limit"] = "10", }); CurrencyHistoryData result = null; try { var data = await _httpClientService.Get <CurrencyHistoryData[]>(url, _config.ObjectPath); result = data.FirstOrDefault(d => d.WAPRICE != null); } catch (ServiceResponseException) { } return(result); }
protected override async Task <IndexHistoryData> LoadDataAsync(string secId, DateTime day) { var boardgroupId = 9; string date = day.Date.ToString("yyyy-MM-dd"); var url = _config.PrepareUrl(boardgroupId, secId, new Dictionary <string, string> { ["sort_order"] = "desc", ["till"] = date, ["limit"] = "1", }); IndexHistoryData result = null; try { var data = await _httpClientService.Get <IndexHistoryData[]>(url, _config.ObjectPath); result = data.FirstOrDefault(); } catch (ServiceResponseException) { } return(result); }
private async Task <IEnumerable <string> > GetSecIdsByAssetCode(string assetCode, DateTime date) { var maxAttemptsCacheKey = $"SECIDSNOTFOUND-{assetCode}-{date.ToString("yyyy-MM-dd")}"; var value = await _stringCacheProvider.GetAsync(maxAttemptsCacheKey); if (value != null) { return(new string[0]); } var children = Enumerable.Empty <JToken>(); var reqDate = date.Date; int count = 0; do { var url = _historyConf.PrepareUrl(FuturesBoardgroupId, null, new Dictionary <string, string> { ["assetcode"] = assetCode, ["date"] = reqDate.ToString("yyyy-MM-dd"), }); var token = await _getService.Get <JToken>(url, _historyConf.ObjectPath); children = token.Children().ToList(); reqDate = reqDate.AddDays(-1); count++; } while (children.Count() < 1 && count < MaxHistoryBackwardStepCount); if (count >= MaxHistoryBackwardStepCount) { _logger.LogWarning( "Error get history contract data for assetcode {assetCode} till {date}. Max attempt count reached.", assetCode, date.ToString("yyyy-MM-dd")); await _stringCacheProvider.PutAsync(maxAttemptsCacheKey, string.Empty); } return(children.Select(t => t.Value <string>("SECID"))); }