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);