using System; using System.Threading.Tasks; using BirdsiteLive.ActivityPub; using BirdsiteLive.ActivityPub.Converters; using BirdsiteLive.Common.Settings; using BirdsiteLive.DAL.Models; using BirdsiteLive.Domain; namespace BirdsiteLive.Moderation.Actions { public interface IRejectFollowingAction { Task ProcessAsync(Follower follower, SyncTwitterUser twitterUser); } public class RejectFollowingAction : IRejectFollowingAction { private readonly IUserService _userService; private readonly InstanceSettings _instanceSettings; #region Ctor public RejectFollowingAction(IUserService userService, InstanceSettings instanceSettings) { _userService = userService; _instanceSettings = instanceSettings; } #endregion public async Task ProcessAsync(Follower follower, SyncTwitterUser twitterUser) { try { var activityFollowing = new ActivityFollow { type = "Follow", actor = follower.ActorId, apObject = UrlFactory.GetActorUrl(_instanceSettings.Domain, twitterUser.Acct) }; await _userService.SendRejectFollowAsync(activityFollowing, follower.Host); } catch (Exception) { } } } }