using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using BirdsiteLive.DAL.Contracts; using BirdsiteLive.Pipeline.Contracts; using BirdsiteLive.Pipeline.Models; namespace BirdsiteLive.Pipeline.Processors { public class RetrieveFollowersProcessor : IRetrieveFollowersProcessor { private readonly IFollowersDal _followersDal; #region Ctor public RetrieveFollowersProcessor(IFollowersDal followersDal) { _followersDal = followersDal; } #endregion public async Task> ProcessAsync( UserWithDataToSync[] userWithTweetsToSyncs, CancellationToken ct ) { //TODO multithread this foreach (var user in userWithTweetsToSyncs) { var followers = await _followersDal.GetFollowersAsync(user.User.Id); user.Followers = followers; } return userWithTweetsToSyncs; } } }