RecordingNotifier.cs 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #pragma warning disable CS1591
  2. #pragma warning disable SA1600
  3. using System;
  4. using System.Linq;
  5. using System.Threading;
  6. using System.Threading.Tasks;
  7. using MediaBrowser.Controller.Library;
  8. using MediaBrowser.Controller.LiveTv;
  9. using MediaBrowser.Controller.Plugins;
  10. using MediaBrowser.Controller.Session;
  11. using Microsoft.Extensions.Logging;
  12. namespace Emby.Server.Implementations.EntryPoints
  13. {
  14. public sealed class RecordingNotifier : IServerEntryPoint
  15. {
  16. private readonly ILiveTvManager _liveTvManager;
  17. private readonly ISessionManager _sessionManager;
  18. private readonly IUserManager _userManager;
  19. private readonly ILogger _logger;
  20. public RecordingNotifier(ISessionManager sessionManager, IUserManager userManager, ILogger logger, ILiveTvManager liveTvManager)
  21. {
  22. _sessionManager = sessionManager;
  23. _userManager = userManager;
  24. _logger = logger;
  25. _liveTvManager = liveTvManager;
  26. }
  27. /// <inheritdoc />
  28. public Task RunAsync()
  29. {
  30. _liveTvManager.TimerCancelled += OnLiveTvManagerTimerCancelled;
  31. _liveTvManager.SeriesTimerCancelled += OnLiveTvManagerSeriesTimerCancelled;
  32. _liveTvManager.TimerCreated += OnLiveTvManagerTimerCreated;
  33. _liveTvManager.SeriesTimerCreated += OnLiveTvManagerSeriesTimerCreated;
  34. return Task.CompletedTask;
  35. }
  36. private void OnLiveTvManagerSeriesTimerCreated(object sender, MediaBrowser.Model.Events.GenericEventArgs<TimerEventInfo> e)
  37. {
  38. SendMessage("SeriesTimerCreated", e.Argument);
  39. }
  40. private void OnLiveTvManagerTimerCreated(object sender, MediaBrowser.Model.Events.GenericEventArgs<TimerEventInfo> e)
  41. {
  42. SendMessage("TimerCreated", e.Argument);
  43. }
  44. private void OnLiveTvManagerSeriesTimerCancelled(object sender, MediaBrowser.Model.Events.GenericEventArgs<TimerEventInfo> e)
  45. {
  46. SendMessage("SeriesTimerCancelled", e.Argument);
  47. }
  48. private void OnLiveTvManagerTimerCancelled(object sender, MediaBrowser.Model.Events.GenericEventArgs<TimerEventInfo> e)
  49. {
  50. SendMessage("TimerCancelled", e.Argument);
  51. }
  52. private async void SendMessage(string name, TimerEventInfo info)
  53. {
  54. var users = _userManager.Users.Where(i => i.Policy.EnableLiveTvAccess).Select(i => i.Id).ToList();
  55. try
  56. {
  57. await _sessionManager.SendMessageToUserSessions(users, name, info, CancellationToken.None).ConfigureAwait(false);
  58. }
  59. catch (Exception ex)
  60. {
  61. _logger.LogError(ex, "Error sending message");
  62. }
  63. }
  64. /// <inheritdoc />
  65. public void Dispose()
  66. {
  67. _liveTvManager.TimerCancelled -= OnLiveTvManagerTimerCancelled;
  68. _liveTvManager.SeriesTimerCancelled -= OnLiveTvManagerSeriesTimerCancelled;
  69. _liveTvManager.TimerCreated -= OnLiveTvManagerTimerCreated;
  70. _liveTvManager.SeriesTimerCreated -= OnLiveTvManagerSeriesTimerCreated;
  71. }
  72. }
  73. }