public async Task ProcessAsync(ModerationTypeEnum type) { if (type == ModerationTypeEnum.None) { return; } var twitterUsers = await _twitterUserDal.GetAllTwitterUsersAsync(); foreach (var user in twitterUsers) { var userHandle = user.Acct.ToLowerInvariant().Trim(); var status = _moderationRepository.CheckStatus(ModerationEntityTypeEnum.TwitterAccount, userHandle); if (type == ModerationTypeEnum.WhiteListing && status != ModeratedTypeEnum.WhiteListed || type == ModerationTypeEnum.BlackListing && status == ModeratedTypeEnum.BlackListed) { await _removeTwitterAccountAction.ProcessAsync(user); } } }
public async Task GetTwitterUsersAsync(BufferBlock <SyncTwitterUser[]> twitterUsersBufferBlock, CancellationToken ct) { for (; ;) { ct.ThrowIfCancellationRequested(); try { var maxUsersNumber = await _maxUsersNumberProvider.GetMaxUsersNumberAsync(); var users = await _twitterUserDal.GetAllTwitterUsersAsync(maxUsersNumber); var userCount = users.Any() ? users.Length : 1; var splitNumber = (int)Math.Ceiling(userCount / 15d); var splitUsers = users.Split(splitNumber).ToList(); foreach (var u in splitUsers) { ct.ThrowIfCancellationRequested(); await twitterUsersBufferBlock.SendAsync(u.ToArray(), ct); await Task.Delay(WaitFactor, ct); } var splitCount = splitUsers.Count(); if (splitCount < 15) { await Task.Delay((15 - splitCount) *WaitFactor, ct); } } catch (Exception e) { _logger.LogError(e, "Failing retrieving Twitter Users."); } } }