45 lines
1.8 KiB
C#
45 lines
1.8 KiB
C#
using System.Threading.Tasks;
|
|
using BirdsiteLive.DAL.Contracts;
|
|
using BirdsiteLive.Domain.Repository;
|
|
using BirdsiteLive.Moderation.Actions;
|
|
|
|
namespace BirdsiteLive.Moderation.Processors
|
|
{
|
|
public interface ITwitterAccountModerationProcessor
|
|
{
|
|
Task ProcessAsync(ModerationTypeEnum type);
|
|
}
|
|
|
|
public class TwitterAccountModerationProcessor : ITwitterAccountModerationProcessor
|
|
{
|
|
private readonly ITwitterUserDal _twitterUserDal;
|
|
private readonly IModerationRepository _moderationRepository;
|
|
private readonly IRemoveTwitterAccountAction _removeTwitterAccountAction;
|
|
|
|
#region Ctor
|
|
public TwitterAccountModerationProcessor(ITwitterUserDal twitterUserDal, IModerationRepository moderationRepository, IRemoveTwitterAccountAction removeTwitterAccountAction)
|
|
{
|
|
_twitterUserDal = twitterUserDal;
|
|
_moderationRepository = moderationRepository;
|
|
_removeTwitterAccountAction = removeTwitterAccountAction;
|
|
}
|
|
#endregion
|
|
|
|
public async Task ProcessAsync(ModerationTypeEnum type)
|
|
{
|
|
if (type == ModerationTypeEnum.None) return;
|
|
|
|
var twitterUsers = await _twitterUserDal.GetAllTwitterUsersAsync(false);
|
|
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
} |