コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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.");
                }
            }
        }