123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- 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.Model.Dlna;
- using MediaBrowser.Model.Logging;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace MediaBrowser.Dlna.Server
- {
- public class ContentDirectory : IContentDirectory, IDisposable
- {
- private readonly ILogger _logger;
- private readonly ILibraryManager _libraryManager;
- private readonly IDtoService _dtoService;
- private readonly IImageProcessor _imageProcessor;
- private readonly IUserDataManager _userDataManager;
- private readonly IDlnaManager _dlna;
- 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)
- {
- _dlna = dlna;
- _userDataManager = userDataManager;
- _imageProcessor = imageProcessor;
- _dtoService = dtoService;
- _libraryManager = libraryManager;
- _config = config;
- _userManager = userManager;
- _eventManager = eventManager;
- _logger = logManager.GetLogger("DlnaContentDirectory");
- }
- private int SystemUpdateId
- {
- get
- {
- var now = DateTime.UtcNow;
- return now.Year + now.DayOfYear + now.Hour;
- }
- }
- public string GetContentDirectoryXml(IDictionary<string, string> headers)
- {
- var profile = _dlna.GetProfile(headers) ??
- _dlna.GetDefaultProfile();
- return new ContentDirectoryXmlBuilder(profile).GetXml();
- }
- public ControlResponse ProcessControlRequest(ControlRequest request)
- {
- var profile = _dlna.GetProfile(request.Headers) ??
- _dlna.GetDefaultProfile();
- var serverAddress = request.RequestedUrl.Substring(0, request.RequestedUrl.IndexOf("/dlna", StringComparison.OrdinalIgnoreCase));
-
- var user = GetUser(profile);
- return new ControlHandler(
- _logger,
- _libraryManager,
- profile,
- serverAddress,
- _dtoService,
- _imageProcessor,
- _userDataManager,
- user,
- SystemUpdateId,
- _config)
- .ProcessControlRequest(request);
- }
- private User GetUser(DeviceProfile profile)
- {
- if (!string.IsNullOrEmpty(profile.UserId))
- {
- var user = _userManager.GetUserById(new Guid(profile.UserId));
- if (user != null)
- {
- return user;
- }
- }
- if (!string.IsNullOrEmpty(_config.Configuration.DlnaOptions.DefaultUserId))
- {
- var user = _userManager.GetUserById(new Guid(_config.Configuration.DlnaOptions.DefaultUserId));
- if (user != null)
- {
- return user;
- }
- }
- // No configuration so it's going to be pretty arbitrary
- return _userManager.Users.First();
- }
- public void Dispose()
- {
- }
- }
- }
|