public async Task GetDdList(RedditDbRequest request) { var response = await _redditService.GetLatestDd(request, null); var children = response.data.children.Select(x => x.data).ToList(); var lastItemTime = children.Last().created_utc; var ddEntities = _mapper.Map <List <RedditDdEntity> >(children); var minDate = children.Select(x => x.created_utc).Min(); var maxDate = children.Select(x => x.created_utc).Max(); await _repo.SaveRedditDdEntities(ddEntities, minDate, maxDate); while (lastItemTime > request.After.ToUnixTimeSeconds()) { response = await _redditService.GetLatestDd(request, children.Last().id); if (response.data.children.Length != 0) { children = response.data.children.Select(x => x.data).ToList(); ddEntities = _mapper.Map <List <RedditDdEntity> >(children); minDate = children.Select(x => x.created_utc).Min(); maxDate = children.Select(x => x.created_utc).Max(); await _repo.SaveRedditDdEntities(ddEntities, minDate, maxDate); lastItemTime = children.Last().created_utc; } else { break; } } }
public async Task <RedditDdResponse> GetLatestDd(RedditDbRequest request, string last) { var client = _httpClientFactory.CreateClient(); var httpRequest = new HttpRequestMessage(HttpMethod.Get, string.IsNullOrWhiteSpace(last) ? GetDdQueryString(request) : GetDdQueryString(request, last)); using var response = await client.SendAsync(httpRequest, HttpCompletionOption.ResponseHeadersRead); var result = await response.Content.ReadAsAsync <RedditDdResponse>(); return(result); }
public async Task <IActionResult> UpdateRedditDdDB(RedditDbRequest request) { await _redditDBProvider.GetDdList(request); return(Ok()); }
private string GetDdQueryString(RedditDbRequest request, string after) { var result = $"https://www.reddit.com/r/wallstreetbets/search.json?sort=new&limit={request.Size}&q=flair%3ADD&after=t3_{after}"; return(result); }
private string GetDdQueryString(RedditDbRequest request) { var result = $"https://www.reddit.com/r/wallstreetbets/search.json?sort=new&t={request.SortType}&limit={request.Size}&q=flair%3ADD"; return(result); }