diff options
Diffstat (limited to 'MediaBrowser.Dlna/PlayTo/PlayToController.cs')
| -rw-r--r-- | MediaBrowser.Dlna/PlayTo/PlayToController.cs | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/MediaBrowser.Dlna/PlayTo/PlayToController.cs b/MediaBrowser.Dlna/PlayTo/PlayToController.cs index 35ebb4cf99..47fd062aaa 100644 --- a/MediaBrowser.Dlna/PlayTo/PlayToController.cs +++ b/MediaBrowser.Dlna/PlayTo/PlayToController.cs @@ -1,6 +1,5 @@ using MediaBrowser.Controller.Dlna; using MediaBrowser.Controller.Drawing; -using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Library; @@ -13,13 +12,13 @@ using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Session; +using MediaBrowser.Model.System; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Model.System; namespace MediaBrowser.Dlna.PlayTo { @@ -33,7 +32,6 @@ namespace MediaBrowser.Dlna.PlayTo private readonly ILogger _logger; private readonly IDlnaManager _dlnaManager; private readonly IUserManager _userManager; - private readonly IDtoService _dtoService; private readonly IImageProcessor _imageProcessor; private readonly SsdpHandler _ssdpHandler; @@ -54,7 +52,7 @@ namespace MediaBrowser.Dlna.PlayTo private Timer _updateTimer; - public PlayToController(SessionInfo session, ISessionManager sessionManager, IItemRepository itemRepository, ILibraryManager libraryManager, ILogger logger, IDlnaManager dlnaManager, IUserManager userManager, IDtoService dtoService, IImageProcessor imageProcessor, SsdpHandler ssdpHandler, string serverAddress) + public PlayToController(SessionInfo session, ISessionManager sessionManager, IItemRepository itemRepository, ILibraryManager libraryManager, ILogger logger, IDlnaManager dlnaManager, IUserManager userManager, IImageProcessor imageProcessor, SsdpHandler ssdpHandler, string serverAddress) { _session = session; _itemRepository = itemRepository; @@ -62,7 +60,6 @@ namespace MediaBrowser.Dlna.PlayTo _libraryManager = libraryManager; _dlnaManager = dlnaManager; _userManager = userManager; - _dtoService = dtoService; _imageProcessor = imageProcessor; _ssdpHandler = ssdpHandler; _serverAddress = serverAddress; @@ -228,6 +225,8 @@ namespace MediaBrowser.Dlna.PlayTo { _logger.Debug("{0} - Received PlayRequest: {1}", this._session.DeviceName, command.PlayCommand); + var user = string.IsNullOrEmpty(command.ControllingUserId) ? null : _userManager.GetUserById(new Guid(command.ControllingUserId)); + var items = new List<BaseItem>(); foreach (string id in command.ItemIds) { @@ -243,12 +242,12 @@ namespace MediaBrowser.Dlna.PlayTo { if (isFirst && command.StartPositionTicks.HasValue) { - playlist.Add(CreatePlaylistItem(item, command.StartPositionTicks.Value, serverAddress)); + playlist.Add(CreatePlaylistItem(item, user, command.StartPositionTicks.Value, serverAddress)); isFirst = false; } else { - playlist.Add(CreatePlaylistItem(item, 0, serverAddress)); + playlist.Add(CreatePlaylistItem(item, user, 0, serverAddress)); } } @@ -267,10 +266,6 @@ namespace MediaBrowser.Dlna.PlayTo if (!string.IsNullOrWhiteSpace(command.ControllingUserId)) { - var userId = new Guid(command.ControllingUserId); - - var user = _userManager.GetUserById(userId); - await _sessionManager.LogSessionActivity(_session.Client, _session.ApplicationVersion, _session.DeviceId, _session.DeviceName, _session.RemoteEndPoint, user).ConfigureAwait(false); } @@ -388,15 +383,16 @@ namespace MediaBrowser.Dlna.PlayTo } } - private PlaylistItem CreatePlaylistItem(BaseItem item, long startPostionTicks, string serverAddress) + private PlaylistItem CreatePlaylistItem(BaseItem item, User user, long startPostionTicks, string serverAddress) { var deviceInfo = _device.Properties; var profile = _dlnaManager.GetProfile(deviceInfo.ToDeviceIdentification()) ?? _dlnaManager.GetDefaultProfile(); - var mediaSources = item is Audio || item is Video - ? _dtoService.GetMediaSources(item) + var hasMediaSources = item as IHasMediaSources; + var mediaSources = hasMediaSources != null + ? (user == null ? hasMediaSources.GetMediaSources(true) : hasMediaSources.GetMediaSources(true, user)).ToList() : new List<MediaSourceInfo>(); var playlistItem = GetPlaylistItem(item, mediaSources, profile, _session.DeviceId); @@ -404,9 +400,7 @@ namespace MediaBrowser.Dlna.PlayTo playlistItem.StreamUrl = playlistItem.StreamInfo.ToUrl(serverAddress); - var itemXml = - new DidlBuilder(profile, _imageProcessor, serverAddress, _dtoService).GetItemDidl(item, _session.DeviceId, - new Filter()); + var itemXml = new DidlBuilder(profile, user, _imageProcessor, serverAddress).GetItemDidl(item, _session.DeviceId, new Filter()); playlistItem.Didl = itemXml; |
