Beispiel #1
0
        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;
                }
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        public async Task <IActionResult> UpdateRedditDdDB(RedditDbRequest request)
        {
            await _redditDBProvider.GetDdList(request);

            return(Ok());
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }