private async Task <List <Product> > GetCommentsAsync(string token, ICollection <Product> list) { try { using var client = new HttpClient(); client.SetBearerToken(token); var results = new List <Product>(); foreach (var thread in list) { string subreddit = thread.Subreddit; var commentLink = $"https://oauth.reddit.com/r/{subreddit}/comments.json?limit=5"; HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, commentLink); request.Headers.UserAgent.ParseAdd("Reddit API" + token); HttpResponseMessage response = await client.SendAsync(request); var resString = response.Content.ReadAsStringAsync().Result; ListingComments deserializedReddit = JsonConvert.DeserializeObject <ListingComments>(resString); ICollection <Comments> coment = new List <Comments>(); var th = new Product(); th.Title = thread.Title.ToString(); foreach (var comment in deserializedReddit.ListingData.Threads) { var com = new Comments(); com.Comment = comment.Data.Body; coment.Add(com); } th.Comments = coment; results.Add(th); } return(results); } catch (Exception) { _logger.LogCritical("Failed To Return Comments From Reddit"); throw; } }
public List <ListingComments> GetCurrentListingMessages(Hashtable listingsCriteria) { var listingComments = new List <ListingComments>(); var _dt = GetListingSpecificMessages(Convert.ToString(listingsCriteria["ID"]), Convert.ToString(listingsCriteria["UserID"])); if (_dt.Rows.Count > 0) { foreach (DataRow dr in _dt.Rows) { var comments = new ListingComments(); comments.CommentID = Convert.ToInt64(dr["CommentID"]); comments.ListingId = Convert.ToInt64(dr["ListingId"]); comments.ListingName = Convert.ToString(dr["ListingName"]); comments.ImagePath = Convert.ToString(dr["ImagePath"]); comments.MessageFrom = Convert.ToString(dr["MessageFrom"]); comments.MessageTimeStamp = Convert.ToString(dr["MessageTimeStamp"]); comments.MessageText = Convert.ToString(dr["MessageText"]); comments.FromID = Convert.ToInt64(dr["FromID"]); var _repliedDt = GetUserRepliedListingSpecificMessages(comments.ListingId, comments.FromID, comments.CommentID); if (_repliedDt.Rows.Count > 0) { var replComments = new List <ListingComments>(); foreach (DataRow replidDr in _repliedDt.Rows) { var repliedComments = new ListingComments(); repliedComments.CommentID = Convert.ToInt64(dr["CommentID"]); repliedComments.ListingId = Convert.ToInt64(replidDr["ListingId"]); repliedComments.ListingName = Convert.ToString(replidDr["ListingName"]); repliedComments.ImagePath = Convert.ToString(replidDr["ImagePath"]); repliedComments.MessageFrom = Convert.ToString(replidDr["MessageFrom"]); repliedComments.MessageTimeStamp = Convert.ToString(replidDr["MessageTimeStamp"]); repliedComments.MessageText = Convert.ToString(replidDr["MessageText"]); repliedComments.FromID = Convert.ToInt64(replidDr["FromID"]); replComments.Add(repliedComments); } comments.MessageCount = _repliedDt.Rows.Count; // setting outer message count for displaying number of comments of logged in user. comments.RepliedComments = replComments; } listingComments.Add(comments); } } return(listingComments); }