public async Task <UserWithTweetsToSync[]> ProcessAsync(SyncTwitterUser[] syncTwitterUsers, CancellationToken ct) { var usersWtTweets = new List <UserWithTweetsToSync>(); //TODO multithread this foreach (var user in syncTwitterUsers) { var tweets = RetrieveNewTweets(user); if (tweets.Length > 0 && user.LastTweetPostedId != -1) { var userWtTweets = new UserWithTweetsToSync { User = user, Tweets = tweets }; usersWtTweets.Add(userWtTweets); } else if (tweets.Length > 0 && user.LastTweetPostedId == -1) { var tweetId = tweets.Last().Id; var now = DateTime.UtcNow; await _twitterUserDal.UpdateTwitterUserAsync(user.Id, tweetId, tweetId, now); } else { var now = DateTime.UtcNow; await _twitterUserDal.UpdateTwitterUserAsync(user.Id, user.LastTweetPostedId, user.LastTweetSynchronizedForAllFollowersId, now); } } return(usersWtTweets.ToArray()); }
public async Task ProcessAsync(UserWithTweetsToSync userWithTweetsToSync, CancellationToken ct) { try { if (userWithTweetsToSync.Tweets.Length == 0) { _logger.LogWarning("No tweets synchronized"); return; } if (userWithTweetsToSync.Followers.Length == 0) { _logger.LogWarning("No Followers found for {User}", userWithTweetsToSync.User.Acct); return; } var userId = userWithTweetsToSync.User.Id; var followingSyncStatuses = userWithTweetsToSync.Followers.Select(x => x.FollowingsSyncStatus[userId]).ToList(); if (followingSyncStatuses.Count == 0) { _logger.LogWarning("No Followers sync found for {User}, Id: {UserId}", userWithTweetsToSync.User.Acct, userId); return; } var lastPostedTweet = userWithTweetsToSync.Tweets.Select(x => x.Id).Max(); var minimumSync = followingSyncStatuses.Min(); var now = DateTime.UtcNow; await _twitterUserDal.UpdateTwitterUserAsync(userId, lastPostedTweet, minimumSync, now); } catch (Exception e) { _logger.LogError(e, "SaveProgressionProcessor.ProcessAsync() Exception"); throw; } }
public async Task ProcessAsync(UserWithTweetsToSync userWithTweetsToSync, CancellationToken ct) { var userId = userWithTweetsToSync.User.Id; var lastPostedTweet = userWithTweetsToSync.Tweets.Select(x => x.Id).Max(); var minimumSync = userWithTweetsToSync.Followers.Select(x => x.FollowingsSyncStatus[userId]).Min(); var now = DateTime.UtcNow; await _twitterUserDal.UpdateTwitterUserAsync(userId, lastPostedTweet, minimumSync, now); }