public async Task <IActionResult> DividendArbitrage2(DividendCalendarRequest request) { var timer = new Stopwatch(); timer.Start(); await _dividendProvider.GetDividendCalendarWithPrices2(request); timer.Stop(); return(Ok("Time taken: " + timer.Elapsed.ToString(@"m\:ss\.fff"))); }
public async Task <List <DividendCalendarItem2> > GetDividendCalendar2(DividendCalendarRequest input) { var httpClient = _httpClientFactory.CreateClient(); var request = new HttpRequestMessage(HttpMethod.Get, GetStockDividendCalendar(input)); request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); using var response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead); var stream = await response.Content.ReadAsStreamAsync(); using StreamReader reader = new StreamReader(stream); using JsonTextReader jsonReader = new JsonTextReader(reader); JsonSerializer ser = new JsonSerializer(); var result = ser.Deserialize <List <DividendCalendarItem2> >(jsonReader); return(result); }
public async Task GetDividendCalendarWithPrices2(DividendCalendarRequest request) { await _stocksRepository.DeleteAllDividendCalendarEntities2(); await _stocksRepository.DeleteStockPriceEntities(); var result = await _dividendCalendarService.GetDividendCalendar2(request); var stocksToInsert = _mapper.Map <List <DividendCalendarEntity2> >(result); await _stocksRepository.SaveDividendCalendarEntities2(stocksToInsert); var stockSplits = ListExtensions.Split(result, 10); foreach (var stockSplit in stockSplits) { var stockSymbols = StringExtensions.GetSymbolsString(stockSplit.Select(x => x.Symbol).ToArray()); var prices = await _stockPriceService.GetStockPrices(stockSymbols); var dbPriceEntities = _mapper.Map <List <StockPriceEntity> >(prices); await _stocksRepository.SaveStockPriceEntities(dbPriceEntities); } }
private string GetStockDividendCalendar(DividendCalendarRequest input) { var result = $"https://financialmodelingprep.com/api/v3/stock_dividend_calendar?from={input.From.ToString("yyyy-MM-dd")}&to={input.To.ToString("yyyy-MM-dd")}&apikey={_settings.ApiToken}"; return(result); }
public async Task <IActionResult> GetDividendCalendar(DividendCalendarRequest request) { var result = await _dividendProvider.GetDividendCalendar(request); return(Ok(result)); }
public async Task <IActionResult> DividendArbitrage(DividendCalendarRequest request) { var result = await _dividendProvider.GetDividendCalendarWithPrices(request); return(Ok(result)); }
public async Task <List <DividendCalendarItem> > GetDividendCalendarWithPrices(DividendCalendarRequest request) { await _stocksRepository.DeleteAllDividendCalendarEntities(); var result = await _dividendCalendarService.GetDividendCalendar(request); await UpdateStockPrices(result); var stocksToInsert = _mapper.Map <List <DividendCalendarEntity> >(result); await _stocksRepository.SaveDividendCalendarEntities(stocksToInsert); return(result); }
public async Task <List <DividendCalendarItem> > GetDividendCalendar(DividendCalendarRequest request) { var result = await _dividendCalendarService.GetDividendCalendar(request); return(result); }