using System.Collections.Generic; using System.Linq; using NzbDrone.Core.Datastore.Events; using NzbDrone.Core.Download.Pending; using NzbDrone.Core.Messaging.Events; using NzbDrone.Core.Queue; using NzbDrone.SignalR; using Radarr.Http; namespace NzbDrone.Api.Queue { public class QueueModule : RadarrRestModuleWithSignalR, IHandle, IHandle { private readonly IQueueService _queueService; private readonly IPendingReleaseService _pendingReleaseService; public QueueModule(IBroadcastSignalRMessage broadcastSignalRMessage, IQueueService queueService, IPendingReleaseService pendingReleaseService) : base(broadcastSignalRMessage) { _queueService = queueService; _pendingReleaseService = pendingReleaseService; GetResourceAll = GetQueue; } private List GetQueue() { return GetQueueItems().ToResource(); } private IEnumerable GetQueueItems() { var queue = _queueService.GetQueue(); var pending = _pendingReleaseService.GetPendingQueue(); return queue.Concat(pending); } public void Handle(QueueUpdatedEvent message) { BroadcastResourceChange(ModelAction.Sync); } public void Handle(PendingReleasesUpdatedEvent message) { BroadcastResourceChange(ModelAction.Sync); } } }