diff --git a/MediaBrowser.Api/Dlna/DlnaServerService.cs b/MediaBrowser.Api/Dlna/DlnaServerService.cs index 8e4e559df..28de8ee17 100644 --- a/MediaBrowser.Api/Dlna/DlnaServerService.cs +++ b/MediaBrowser.Api/Dlna/DlnaServerService.cs @@ -50,8 +50,14 @@ namespace MediaBrowser.Api.Dlna } [Route("/Dlna/contentdirectory/{UuId}/events", Summary = "Processes an event subscription request")] + public class ProcessContentDirectoryEventRequest + { + [ApiMember(Name = "UuId", Description = "Server UuId", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "GET")] + public string UuId { get; set; } + } + [Route("/Dlna/connectionmanager/{UuId}/events", Summary = "Processes an event subscription request")] - public class ProcessEventRequest + public class ProcessConnectionManagerEventRequest { [ApiMember(Name = "UuId", Description = "Server UuId", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "GET")] public string UuId { get; set; } @@ -68,14 +74,12 @@ namespace MediaBrowser.Api.Dlna { private readonly IDlnaManager _dlnaManager; private readonly IContentDirectory _contentDirectory; - private readonly IEventManager _eventManager; private readonly IConnectionManager _connectionManager; - public DlnaServerService(IDlnaManager dlnaManager, IContentDirectory contentDirectory, IEventManager eventManager, IConnectionManager connectionManager) + public DlnaServerService(IDlnaManager dlnaManager, IContentDirectory contentDirectory, IConnectionManager connectionManager) { _dlnaManager = dlnaManager; _contentDirectory = contentDirectory; - _eventManager = eventManager; _connectionManager = connectionManager; } @@ -158,7 +162,17 @@ namespace MediaBrowser.Api.Dlna } } - public object Any(ProcessEventRequest request) + public object Any(ProcessContentDirectoryEventRequest request) + { + return ProcessEventRequest(_contentDirectory); + } + + public object Any(ProcessConnectionManagerEventRequest request) + { + return ProcessEventRequest(_connectionManager); + } + + private object ProcessEventRequest(IEventManager eventManager) { var subscriptionId = GetHeader("SID"); var notificationType = GetHeader("NT"); @@ -171,13 +185,13 @@ namespace MediaBrowser.Api.Dlna { if (string.IsNullOrEmpty(notificationType)) { - return GetSubscriptionResponse(_eventManager.RenewEventSubscription(subscriptionId, timeout)); + return GetSubscriptionResponse(eventManager.RenewEventSubscription(subscriptionId, timeout)); } - return GetSubscriptionResponse(_eventManager.CreateEventSubscription(notificationType, timeout, callback)); + return GetSubscriptionResponse(eventManager.CreateEventSubscription(notificationType, timeout, callback)); } - return GetSubscriptionResponse(_eventManager.CancelEventSubscription(subscriptionId)); + return GetSubscriptionResponse(eventManager.CancelEventSubscription(subscriptionId)); } private object GetSubscriptionResponse(EventSubscriptionResponse response) diff --git a/MediaBrowser.Controller/Dlna/IConnectionManager.cs b/MediaBrowser.Controller/Dlna/IConnectionManager.cs index 942e523e8..38d96e607 100644 --- a/MediaBrowser.Controller/Dlna/IConnectionManager.cs +++ b/MediaBrowser.Controller/Dlna/IConnectionManager.cs @@ -1,7 +1,7 @@  namespace MediaBrowser.Controller.Dlna { - public interface IConnectionManager : IUpnpService + public interface IConnectionManager : IEventManager, IUpnpService { } } diff --git a/MediaBrowser.Controller/Dlna/IContentDirectory.cs b/MediaBrowser.Controller/Dlna/IContentDirectory.cs index 00c236813..28635d9b7 100644 --- a/MediaBrowser.Controller/Dlna/IContentDirectory.cs +++ b/MediaBrowser.Controller/Dlna/IContentDirectory.cs @@ -1,7 +1,7 @@  namespace MediaBrowser.Controller.Dlna { - public interface IContentDirectory : IUpnpService + public interface IContentDirectory : IEventManager, IUpnpService { } } diff --git a/MediaBrowser.Controller/Dlna/IEventManager.cs b/MediaBrowser.Controller/Dlna/IEventManager.cs index 4abf623a9..54e2a02dd 100644 --- a/MediaBrowser.Controller/Dlna/IEventManager.cs +++ b/MediaBrowser.Controller/Dlna/IEventManager.cs @@ -1,7 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Collections.Generic; -using System.Threading.Tasks; - + namespace MediaBrowser.Controller.Dlna { public interface IEventManager @@ -28,20 +25,5 @@ namespace MediaBrowser.Controller.Dlna /// The callback URL. /// EventSubscriptionResponse. EventSubscriptionResponse CreateEventSubscription(string notificationType, int? timeoutSeconds, string callbackUrl); - - /// - /// Gets the subscription. - /// - /// The identifier. - /// EventSubscription. - EventSubscription GetSubscription(string id); - - /// - /// Triggers the event. - /// - /// Type of the notification. - /// The state variables. - /// Task. - Task TriggerEvent(string notificationType, IDictionary stateVariables); } } diff --git a/MediaBrowser.Dlna/ConnectionManager/ConnectionManager.cs b/MediaBrowser.Dlna/ConnectionManager/ConnectionManager.cs index 3270fca72..62cd3904d 100644 --- a/MediaBrowser.Dlna/ConnectionManager/ConnectionManager.cs +++ b/MediaBrowser.Dlna/ConnectionManager/ConnectionManager.cs @@ -1,21 +1,24 @@ -using MediaBrowser.Controller.Configuration; +using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Dlna; +using MediaBrowser.Dlna.Service; using MediaBrowser.Model.Logging; using System.Collections.Generic; namespace MediaBrowser.Dlna.ConnectionManager { - public class ConnectionManager : IConnectionManager + public class ConnectionManager : BaseService, IConnectionManager { private readonly IDlnaManager _dlna; private readonly ILogger _logger; private readonly IServerConfigurationManager _config; - public ConnectionManager(IDlnaManager dlna, ILogManager logManager, IServerConfigurationManager config) + public ConnectionManager(IDlnaManager dlna, IServerConfigurationManager config, ILogger logger, IHttpClient httpClient) + : base(logger, httpClient) { _dlna = dlna; _config = config; - _logger = logManager.GetLogger("UpnpConnectionManager"); + _logger = logger; } public string GetServiceXml(IDictionary headers) diff --git a/MediaBrowser.Dlna/ContentDirectory/ContentDirectory.cs b/MediaBrowser.Dlna/ContentDirectory/ContentDirectory.cs index d1b29502d..5f0a863e7 100644 --- a/MediaBrowser.Dlna/ContentDirectory/ContentDirectory.cs +++ b/MediaBrowser.Dlna/ContentDirectory/ContentDirectory.cs @@ -1,9 +1,11 @@ -using MediaBrowser.Controller.Configuration; +using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Dlna; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; +using MediaBrowser.Dlna.Service; using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Logging; using System; @@ -12,9 +14,8 @@ using System.Linq; namespace MediaBrowser.Dlna.ContentDirectory { - public class ContentDirectory : IContentDirectory, IDisposable + public class ContentDirectory : BaseService, IContentDirectory, IDisposable { - private readonly ILogger _logger; private readonly ILibraryManager _libraryManager; private readonly IDtoService _dtoService; private readonly IImageProcessor _imageProcessor; @@ -23,17 +24,16 @@ namespace MediaBrowser.Dlna.ContentDirectory private readonly IServerConfigurationManager _config; private readonly IUserManager _userManager; - private readonly IEventManager _eventManager; - public ContentDirectory(IDlnaManager dlna, IUserDataManager userDataManager, IImageProcessor imageProcessor, IDtoService dtoService, ILibraryManager libraryManager, - ILogManager logManager, IServerConfigurationManager config, IUserManager userManager, - IEventManager eventManager) + ILogger logger, + IHttpClient httpClient) + : base(logger, httpClient) { _dlna = dlna; _userDataManager = userDataManager; @@ -42,8 +42,6 @@ namespace MediaBrowser.Dlna.ContentDirectory _libraryManager = libraryManager; _config = config; _userManager = userManager; - _eventManager = eventManager; - _logger = logManager.GetLogger("UpnpContentDirectory"); } private int SystemUpdateId @@ -71,7 +69,7 @@ namespace MediaBrowser.Dlna.ContentDirectory var user = GetUser(profile); return new ControlHandler( - _logger, + Logger, _libraryManager, profile, serverAddress, diff --git a/MediaBrowser.Dlna/Eventing/EventManager.cs b/MediaBrowser.Dlna/Eventing/EventManager.cs index 3961c366a..9a15cfb9b 100644 --- a/MediaBrowser.Dlna/Eventing/EventManager.cs +++ b/MediaBrowser.Dlna/Eventing/EventManager.cs @@ -21,10 +21,10 @@ namespace MediaBrowser.Dlna.Eventing private readonly ILogger _logger; private readonly IHttpClient _httpClient; - public EventManager(ILogManager logManager, IHttpClient httpClient) + public EventManager(ILogger logger, IHttpClient httpClient) { _httpClient = httpClient; - _logger = logManager.GetLogger("DlnaEventManager"); + _logger = logger; } public EventSubscriptionResponse RenewEventSubscription(string subscriptionId, int? timeoutSeconds) diff --git a/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj b/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj index caef50d36..f5e9d44d8 100644 --- a/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj +++ b/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj @@ -88,6 +88,7 @@ + diff --git a/MediaBrowser.Dlna/Service/BaseService.cs b/MediaBrowser.Dlna/Service/BaseService.cs new file mode 100644 index 000000000..aeea7b8f3 --- /dev/null +++ b/MediaBrowser.Dlna/Service/BaseService.cs @@ -0,0 +1,37 @@ +using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Dlna; +using MediaBrowser.Dlna.Eventing; +using MediaBrowser.Model.Logging; + +namespace MediaBrowser.Dlna.Service +{ + public class BaseService : IEventManager + { + protected IEventManager EventManager; + protected IHttpClient HttpClient; + protected ILogger Logger; + + protected BaseService(ILogger logger, IHttpClient httpClient) + { + Logger = logger; + HttpClient = httpClient; + + EventManager = new EventManager(Logger, HttpClient); + } + + public EventSubscriptionResponse CancelEventSubscription(string subscriptionId) + { + return EventManager.CancelEventSubscription(subscriptionId); + } + + public EventSubscriptionResponse RenewEventSubscription(string subscriptionId, int? timeoutSeconds) + { + return EventManager.RenewEventSubscription(subscriptionId, timeoutSeconds); + } + + public EventSubscriptionResponse CreateEventSubscription(string notificationType, int? timeoutSeconds, string callbackUrl) + { + return EventManager.CreateEventSubscription(notificationType, timeoutSeconds, callbackUrl); + } + } +} diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs index dcb69d49d..d6c3a7e9f 100644 --- a/MediaBrowser.ServerApplication/ApplicationHost.cs +++ b/MediaBrowser.ServerApplication/ApplicationHost.cs @@ -522,13 +522,10 @@ namespace MediaBrowser.ServerApplication var dlnaManager = new DlnaManager(XmlSerializer, FileSystemManager, ApplicationPaths, LogManager.GetLogger("Dlna"), JsonSerializer); RegisterSingleInstance(dlnaManager); - var dlnaEventManager = new EventManager(LogManager, HttpClient); - RegisterSingleInstance(dlnaEventManager); - - var contentDirectory = new ContentDirectory(dlnaManager, UserDataManager, ImageProcessor, DtoService, LibraryManager, LogManager, ServerConfigurationManager, UserManager, dlnaEventManager); + var contentDirectory = new ContentDirectory(dlnaManager, UserDataManager, ImageProcessor, DtoService, LibraryManager, ServerConfigurationManager, UserManager, LogManager.GetLogger("UpnpContentDirectory"), HttpClient); RegisterSingleInstance(contentDirectory); - var connectionManager = new ConnectionManager(dlnaManager, LogManager, ServerConfigurationManager); + var connectionManager = new ConnectionManager(dlnaManager, ServerConfigurationManager, LogManager.GetLogger("UpnpConnectionManager"), HttpClient); RegisterSingleInstance(connectionManager); var collectionManager = new CollectionManager(LibraryManager, FileSystemManager, LibraryMonitor);