Exemple #1
0
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                ChannelUpdateTask channelUpdateTask = await _channelUpdateTaskUnloader.Dequeue();

                IEnumerable <Track> tracks = (await Task.WhenAll(channelUpdateTask.NewMediaUrls.Select(_youTubeService.ExtractYouTubeVideos)))
                                             .SelectMany(videoArray => videoArray.Select(video => video.ToTrack()));

                using (IServiceScope serviceScope = _serviceProvider.CreateScope())
                {
                    IChannelTrackRepository channelTrackRepository = serviceScope.ServiceProvider.GetService <IChannelTrackRepository>();
                    await channelTrackRepository.AddNewTracks(channelUpdateTask.ChannelId, tracks);

                    IChannelRepository channelRepository = serviceScope.ServiceProvider.GetService <IChannelRepository>();
                    await channelRepository.UpdateChannelNotEditing(channelUpdateTask.ChannelId);

                    Channel channel = channelRepository.GetChannelByIdOrDefault(channelUpdateTask.ChannelId);

                    IChannelUpdatedNotifierHubProxy channelUpdatedNotifierHubProxy = serviceScope.ServiceProvider.GetService <IChannelUpdatedNotifierHubProxy>();
                    await channelUpdatedNotifierHubProxy.NotifyChannelUpdated(channel.OwnerId, channel);
                }
            }
        }
 public void Enqueue(ChannelUpdateTask channelUpdateTask)
 {
     _updateTaskQueue.Enqueue(channelUpdateTask);
 }