diff --git a/MediaBrowser.Api/AlbumsService.cs b/MediaBrowser.Api/AlbumsService.cs index cbdf1923ba..e78a30c4a8 100644 --- a/MediaBrowser.Api/AlbumsService.cs +++ b/MediaBrowser.Api/AlbumsService.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Dto; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; @@ -30,13 +31,15 @@ namespace MediaBrowser.Api /// private readonly ILibraryManager _libraryManager; private readonly IItemRepository _itemRepo; + private readonly IDtoService _dtoService; - public AlbumsService(IUserManager userManager, IUserDataRepository userDataRepository, ILibraryManager libraryManager, IItemRepository itemRepo) + public AlbumsService(IUserManager userManager, IUserDataRepository userDataRepository, ILibraryManager libraryManager, IItemRepository itemRepo, IDtoService dtoService) { _userManager = userManager; _userDataRepository = userDataRepository; _libraryManager = libraryManager; _itemRepo = itemRepo; + _dtoService = dtoService; } /// @@ -50,6 +53,7 @@ namespace MediaBrowser.Api _itemRepo, _libraryManager, _userDataRepository, + _dtoService, Logger, request, item => item is MusicAlbum, GetAlbumSimilarityScore); diff --git a/MediaBrowser.Api/GamesService.cs b/MediaBrowser.Api/GamesService.cs index d88840e80c..ae328f70f3 100644 --- a/MediaBrowser.Api/GamesService.cs +++ b/MediaBrowser.Api/GamesService.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Dto; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; using ServiceStack.ServiceHost; @@ -34,6 +35,7 @@ namespace MediaBrowser.Api private readonly ILibraryManager _libraryManager; private readonly IItemRepository _itemRepo; + private readonly IDtoService _dtoService; /// /// Initializes a new instance of the class. @@ -42,12 +44,13 @@ namespace MediaBrowser.Api /// The user data repository. /// The library manager. /// The item repo. - public GamesService(IUserManager userManager, IUserDataRepository userDataRepository, ILibraryManager libraryManager, IItemRepository itemRepo) + public GamesService(IUserManager userManager, IUserDataRepository userDataRepository, ILibraryManager libraryManager, IItemRepository itemRepo, IDtoService dtoService) { _userManager = userManager; _userDataRepository = userDataRepository; _libraryManager = libraryManager; _itemRepo = itemRepo; + _dtoService = dtoService; } /// @@ -61,6 +64,7 @@ namespace MediaBrowser.Api _itemRepo, _libraryManager, _userDataRepository, + _dtoService, Logger, request, item => item is Game, SimilarItemsHelper.GetSimiliarityScore); diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs index 678f89c2c1..496c7be1b5 100644 --- a/MediaBrowser.Api/Images/ImageService.cs +++ b/MediaBrowser.Api/Images/ImageService.cs @@ -337,21 +337,19 @@ namespace MediaBrowser.Api.Images private readonly IProviderManager _providerManager; private readonly IItemRepository _itemRepo; + private readonly IDtoService _dtoService; /// /// Initializes a new instance of the class. /// - /// The user manager. - /// The library manager. - /// The app paths. - /// The provider manager. - public ImageService(IUserManager userManager, ILibraryManager libraryManager, IApplicationPaths appPaths, IProviderManager providerManager, IItemRepository itemRepo) + public ImageService(IUserManager userManager, ILibraryManager libraryManager, IApplicationPaths appPaths, IProviderManager providerManager, IItemRepository itemRepo, IDtoService dtoService) { _userManager = userManager; _libraryManager = libraryManager; _appPaths = appPaths; _providerManager = providerManager; _itemRepo = itemRepo; + _dtoService = dtoService; } /// @@ -361,7 +359,7 @@ namespace MediaBrowser.Api.Images /// System.Object. public object Get(GetItemImageInfos request) { - var item = DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager); + var item = _dtoService.GetItemByDtoId(request.Id); var result = GetItemImageInfos(item).Result; @@ -512,7 +510,7 @@ namespace MediaBrowser.Api.Images /// System.Object. public object Get(GetItemImage request) { - var item = string.IsNullOrEmpty(request.Id) ? _libraryManager.RootFolder : DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager); + var item = string.IsNullOrEmpty(request.Id) ? _libraryManager.RootFolder : _dtoService.GetItemByDtoId(request.Id); return GetImage(request, item); } @@ -824,9 +822,10 @@ namespace MediaBrowser.Api.Images } } - var memoryStream = new MemoryStream(bytes); - - memoryStream.Position = 0; + var memoryStream = new MemoryStream(bytes) + { + Position = 0 + }; var imageIndex = 0; diff --git a/MediaBrowser.Api/InstantMixService.cs b/MediaBrowser.Api/InstantMixService.cs index dbdc5cd930..23472a93de 100644 --- a/MediaBrowser.Api/InstantMixService.cs +++ b/MediaBrowser.Api/InstantMixService.cs @@ -1,7 +1,6 @@ using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.Querying; using ServiceStack.ServiceHost; using System; @@ -42,22 +41,20 @@ namespace MediaBrowser.Api public class InstantMixService : BaseApiService { private readonly IUserManager _userManager; - private readonly IUserDataRepository _userDataRepository; private readonly ILibraryManager _libraryManager; - private readonly IItemRepository _itemRepo; + private readonly IDtoService _dtoService; - public InstantMixService(IUserManager userManager, IUserDataRepository userDataRepository, ILibraryManager libraryManager, IItemRepository itemRepo) + public InstantMixService(IUserManager userManager, ILibraryManager libraryManager, IDtoService dtoService) { _userManager = userManager; - _userDataRepository = userDataRepository; _libraryManager = libraryManager; - _itemRepo = itemRepo; + _dtoService = dtoService; } public object Get(GetInstantMixFromSong request) { - var item = DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager); + var item = _dtoService.GetItemByDtoId(request.Id); var result = GetInstantMixResult(request, item.Genres).Result; @@ -66,7 +63,7 @@ namespace MediaBrowser.Api public object Get(GetInstantMixFromAlbum request) { - var album = (MusicAlbum)DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager); + var album = (MusicAlbum)_dtoService.GetItemByDtoId(request.Id); var genres = album .RecursiveChildren @@ -112,8 +109,6 @@ namespace MediaBrowser.Api var fields = request.GetItemFields().ToList(); - var dtoBuilder = new DtoBuilder(Logger, _libraryManager, _userDataRepository, _itemRepo); - var inputItems = user == null ? _libraryManager.RootFolder.RecursiveChildren : user.RootFolder.GetRecursiveChildren(user); @@ -138,7 +133,7 @@ namespace MediaBrowser.Api }; var tasks = items.Take(request.Limit ?? items.Length) - .Select(i => dtoBuilder.GetBaseItemDto(i, fields, user)); + .Select(i => _dtoService.GetBaseItemDto(i, fields, user)); result.Items = await Task.WhenAll(tasks).ConfigureAwait(false); diff --git a/MediaBrowser.Api/ItemRefreshService.cs b/MediaBrowser.Api/ItemRefreshService.cs index f6e5a2cba2..e31292e9d5 100644 --- a/MediaBrowser.Api/ItemRefreshService.cs +++ b/MediaBrowser.Api/ItemRefreshService.cs @@ -1,9 +1,9 @@ -using System.Linq; -using MediaBrowser.Controller.Dto; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using ServiceStack.ServiceHost; using System; +using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -92,12 +92,12 @@ namespace MediaBrowser.Api public class ItemRefreshService : BaseApiService { private readonly ILibraryManager _libraryManager; - private readonly IUserManager _userManager; + private readonly IDtoService _dtoService; - public ItemRefreshService(ILibraryManager libraryManager, IUserManager userManager) + public ItemRefreshService(ILibraryManager libraryManager, IDtoService dtoService) { _libraryManager = libraryManager; - _userManager = userManager; + _dtoService = dtoService; } public void Post(RefreshArtist request) @@ -244,7 +244,7 @@ namespace MediaBrowser.Api /// Task. private async Task RefreshItem(RefreshItem request) { - var item = DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager); + var item = _dtoService.GetItemByDtoId(request.Id); var folder = item as Folder; diff --git a/MediaBrowser.Api/ItemUpdateService.cs b/MediaBrowser.Api/ItemUpdateService.cs index 8e3c5ca8df..aff81283d7 100644 --- a/MediaBrowser.Api/ItemUpdateService.cs +++ b/MediaBrowser.Api/ItemUpdateService.cs @@ -72,12 +72,12 @@ namespace MediaBrowser.Api public class ItemUpdateService : BaseApiService { private readonly ILibraryManager _libraryManager; - private readonly IUserManager _userManager; + private readonly IDtoService _dtoService; - public ItemUpdateService(ILibraryManager libraryManager, IUserManager userManager) + public ItemUpdateService(ILibraryManager libraryManager, IDtoService dtoService) { _libraryManager = libraryManager; - _userManager = userManager; + _dtoService = dtoService; } public void Post(UpdateItem request) @@ -89,7 +89,7 @@ namespace MediaBrowser.Api private Task UpdateItem(UpdateItem request) { - var item = DtoBuilder.GetItemByClientId(request.ItemId, _userManager, _libraryManager); + var item = _dtoService.GetItemByDtoId(request.ItemId); UpdateItem(request, item); diff --git a/MediaBrowser.Api/LibraryService.cs b/MediaBrowser.Api/LibraryService.cs index ed2ef38840..14b68942c8 100644 --- a/MediaBrowser.Api/LibraryService.cs +++ b/MediaBrowser.Api/LibraryService.cs @@ -187,27 +187,24 @@ namespace MediaBrowser.Api private readonly ILibraryManager _libraryManager; private readonly IUserManager _userManager; - private readonly IUserDataRepository _userDataRepository; + + private readonly IDtoService _dtoService; /// /// Initializes a new instance of the class. /// - /// The item repo. - /// The library manager. - /// The user manager. - /// The user data repository. public LibraryService(IItemRepository itemRepo, ILibraryManager libraryManager, IUserManager userManager, - IUserDataRepository userDataRepository) + IDtoService dtoService) { _itemRepo = itemRepo; _libraryManager = libraryManager; _userManager = userManager; - _userDataRepository = userDataRepository; + _dtoService = dtoService; } public object Get(GetFile request) { - var item = DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager); + var item = _dtoService.GetItemByDtoId(request.Id); if (item.LocationType == LocationType.Remote || item.LocationType == LocationType.Virtual) { @@ -240,7 +237,7 @@ namespace MediaBrowser.Api /// Task{BaseItemDto[]}. public async Task GetAncestors(GetAncestors request) { - var item = DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager); + var item = _dtoService.GetItemByDtoId(request.Id); var tasks = new List>(); @@ -251,8 +248,6 @@ namespace MediaBrowser.Api .Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)) .ToList(); - var dtoBuilder = new DtoBuilder(Logger, _libraryManager, _userDataRepository, _itemRepo); - BaseItem parent = item.Parent; while (parent != null) @@ -262,7 +257,7 @@ namespace MediaBrowser.Api parent = TranslateParentItem(parent, user); } - tasks.Add(dtoBuilder.GetBaseItemDto(parent, fields, user)); + tasks.Add(_dtoService.GetBaseItemDto(parent, fields, user)); if (parent is UserRootFolder) { @@ -379,7 +374,7 @@ namespace MediaBrowser.Api private async Task DeleteItem(DeleteItem request) { - var item = DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager); + var item = _dtoService.GetItemByDtoId(request.Id); var parent = item.Parent; @@ -505,7 +500,7 @@ namespace MediaBrowser.Api ? (request.UserId.HasValue ? user.RootFolder : (Folder)_libraryManager.RootFolder) - : DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager, request.UserId); + : _dtoService.GetItemByDtoId(request.Id, request.UserId); while (item.ThemeSongIds.Count == 0 && request.InheritFromParent && item.Parent != null) { @@ -517,11 +512,9 @@ namespace MediaBrowser.Api .Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)) .ToList(); - var dtoBuilder = new DtoBuilder(Logger, _libraryManager, _userDataRepository, _itemRepo); - var tasks = item.ThemeSongIds.Select(_itemRepo.RetrieveItem) .OrderBy(i => i.SortName) - .Select(i => dtoBuilder.GetBaseItemDto(i, fields, user, item)); + .Select(i => _dtoService.GetBaseItemDto(i, fields, user, item)); var items = await Task.WhenAll(tasks).ConfigureAwait(false); @@ -529,7 +522,7 @@ namespace MediaBrowser.Api { Items = items, TotalRecordCount = items.Length, - OwnerId = DtoBuilder.GetClientItemId(item) + OwnerId = _dtoService.GetDtoId(item) }; } @@ -553,7 +546,7 @@ namespace MediaBrowser.Api ? (request.UserId.HasValue ? user.RootFolder : (Folder)_libraryManager.RootFolder) - : DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager, request.UserId); + : _dtoService.GetItemByDtoId(request.Id, request.UserId); while (item.ThemeVideoIds.Count == 0 && request.InheritFromParent && item.Parent != null) { @@ -566,11 +559,9 @@ namespace MediaBrowser.Api .Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)) .ToList(); - var dtoBuilder = new DtoBuilder(Logger, _libraryManager, _userDataRepository, _itemRepo); - var tasks = item.ThemeVideoIds.Select(_itemRepo.RetrieveItem) .OrderBy(i => i.SortName) - .Select(i => dtoBuilder.GetBaseItemDto(i, fields, user, item)); + .Select(i => _dtoService.GetBaseItemDto(i, fields, user, item)); var items = await Task.WhenAll(tasks).ConfigureAwait(false); @@ -578,7 +569,7 @@ namespace MediaBrowser.Api { Items = items, TotalRecordCount = items.Length, - OwnerId = DtoBuilder.GetClientItemId(item) + OwnerId = _dtoService.GetDtoId(item) }; } } diff --git a/MediaBrowser.Api/MoviesService.cs b/MediaBrowser.Api/MoviesService.cs index 5ec9aa1031..b0a4268da9 100644 --- a/MediaBrowser.Api/MoviesService.cs +++ b/MediaBrowser.Api/MoviesService.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Dto; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; @@ -42,19 +43,21 @@ namespace MediaBrowser.Api private readonly ILibraryManager _libraryManager; private readonly IItemRepository _itemRepo; - + private readonly IDtoService _dtoService; + /// /// Initializes a new instance of the class. /// /// The user manager. /// The user data repository. /// The library manager. - public MoviesService(IUserManager userManager, IUserDataRepository userDataRepository, ILibraryManager libraryManager, IItemRepository itemRepo) + public MoviesService(IUserManager userManager, IUserDataRepository userDataRepository, ILibraryManager libraryManager, IItemRepository itemRepo, IDtoService dtoService) { _userManager = userManager; _userDataRepository = userDataRepository; _libraryManager = libraryManager; _itemRepo = itemRepo; + _dtoService = dtoService; } /// @@ -68,6 +71,7 @@ namespace MediaBrowser.Api _itemRepo, _libraryManager, _userDataRepository, + _dtoService, Logger, request, item => item is Movie || (item is Trailer && request.IncludeTrailers), SimilarItemsHelper.GetSimiliarityScore); diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index e08152786d..f0b6093492 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -31,31 +31,32 @@ namespace MediaBrowser.Api.Playback /// Gets or sets the application paths. /// /// The application paths. - protected IServerApplicationPaths ApplicationPaths { get; set; } + protected IServerApplicationPaths ApplicationPaths { get; private set; } /// /// Gets or sets the user manager. /// /// The user manager. - protected IUserManager UserManager { get; set; } + protected IUserManager UserManager { get; private set; } /// /// Gets or sets the library manager. /// /// The library manager. - protected ILibraryManager LibraryManager { get; set; } + protected ILibraryManager LibraryManager { get; private set; } /// /// Gets or sets the iso manager. /// /// The iso manager. - protected IIsoManager IsoManager { get; set; } + protected IIsoManager IsoManager { get; private set; } /// /// Gets or sets the media encoder. /// /// The media encoder. - protected IMediaEncoder MediaEncoder { get; set; } + protected IMediaEncoder MediaEncoder { get; private set; } + protected IDtoService DtoService { get; private set; } /// /// Initializes a new instance of the class. @@ -65,8 +66,9 @@ namespace MediaBrowser.Api.Playback /// The library manager. /// The iso manager. /// The media encoder. - protected BaseStreamingService(IServerApplicationPaths appPaths, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder) + protected BaseStreamingService(IServerApplicationPaths appPaths, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IDtoService dtoService) { + DtoService = dtoService; ApplicationPaths = appPaths; UserManager = userManager; LibraryManager = libraryManager; @@ -751,7 +753,7 @@ namespace MediaBrowser.Api.Playback /// StreamState. protected StreamState GetState(StreamRequest request) { - var item = DtoBuilder.GetItemByClientId(request.Id, UserManager, LibraryManager); + var item = DtoService.GetItemByDtoId(request.Id); var media = (IHasMediaStreams)item; diff --git a/MediaBrowser.Api/Playback/Hls/AudioHlsService.cs b/MediaBrowser.Api/Playback/Hls/AudioHlsService.cs index afd6965458..68a252d1bd 100644 --- a/MediaBrowser.Api/Playback/Hls/AudioHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/AudioHlsService.cs @@ -1,5 +1,6 @@ using MediaBrowser.Common.MediaInfo; using MediaBrowser.Controller; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Dto; using MediaBrowser.Model.IO; @@ -53,8 +54,8 @@ namespace MediaBrowser.Api.Playback.Hls /// The library manager. /// The iso manager. /// The media encoder. - public AudioHlsService(IServerApplicationPaths appPaths, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder) - : base(appPaths, userManager, libraryManager, isoManager, mediaEncoder) + public AudioHlsService(IServerApplicationPaths appPaths, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IDtoService dtoService) + : base(appPaths, userManager, libraryManager, isoManager, mediaEncoder, dtoService) { } diff --git a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs index 7db38ddfcf..6c56425a6b 100644 --- a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs @@ -3,6 +3,7 @@ using MediaBrowser.Common.IO; using MediaBrowser.Common.MediaInfo; using MediaBrowser.Common.Net; using MediaBrowser.Controller; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Model.IO; @@ -37,8 +38,8 @@ namespace MediaBrowser.Api.Playback.Hls /// The library manager. /// The iso manager. /// The media encoder. - protected BaseHlsService(IServerApplicationPaths appPaths, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder) - : base(appPaths, userManager, libraryManager, isoManager, mediaEncoder) + protected BaseHlsService(IServerApplicationPaths appPaths, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IDtoService dtoService) + : base(appPaths, userManager, libraryManager, isoManager, mediaEncoder, dtoService) { } diff --git a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs index 983b49d53e..dfe154c09d 100644 --- a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs @@ -1,5 +1,6 @@ using MediaBrowser.Common.MediaInfo; using MediaBrowser.Controller; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Library; using MediaBrowser.Model.IO; using ServiceStack.ServiceHost; @@ -69,8 +70,8 @@ namespace MediaBrowser.Api.Playback.Hls /// The library manager. /// The iso manager. /// The media encoder. - public VideoHlsService(IServerApplicationPaths appPaths, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder) - : base(appPaths, userManager, libraryManager, isoManager, mediaEncoder) + public VideoHlsService(IServerApplicationPaths appPaths, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IDtoService dtoService) + : base(appPaths, userManager, libraryManager, isoManager, mediaEncoder, dtoService) { } diff --git a/MediaBrowser.Api/Playback/Progressive/AudioService.cs b/MediaBrowser.Api/Playback/Progressive/AudioService.cs index 337a290b4d..d935fea79b 100644 --- a/MediaBrowser.Api/Playback/Progressive/AudioService.cs +++ b/MediaBrowser.Api/Playback/Progressive/AudioService.cs @@ -1,5 +1,6 @@ using MediaBrowser.Common.MediaInfo; using MediaBrowser.Controller; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.IO; @@ -48,8 +49,8 @@ namespace MediaBrowser.Api.Playback.Progressive /// The library manager. /// The iso manager. /// The media encoder. - public AudioService(IServerApplicationPaths appPaths, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IItemRepository itemRepo) - : base(appPaths, userManager, libraryManager, isoManager, mediaEncoder, itemRepo) + public AudioService(IServerApplicationPaths appPaths, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IItemRepository itemRepo, IDtoService dtoService) + : base(appPaths, userManager, libraryManager, isoManager, mediaEncoder, itemRepo, dtoService) { } diff --git a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs index feacc3fd01..21ef2ba0ae 100644 --- a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs +++ b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs @@ -2,6 +2,7 @@ using MediaBrowser.Common.MediaInfo; using MediaBrowser.Common.Net; using MediaBrowser.Controller; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Library; @@ -23,9 +24,9 @@ namespace MediaBrowser.Api.Playback.Progressive public abstract class BaseProgressiveStreamingService : BaseStreamingService { protected readonly IItemRepository ItemRepository; - - protected BaseProgressiveStreamingService(IServerApplicationPaths appPaths, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IItemRepository itemRepository) : - base(appPaths, userManager, libraryManager, isoManager, mediaEncoder) + + protected BaseProgressiveStreamingService(IServerApplicationPaths appPaths, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IItemRepository itemRepository, IDtoService dtoService) : + base(appPaths, userManager, libraryManager, isoManager, mediaEncoder, dtoService) { ItemRepository = itemRepository; } @@ -302,7 +303,7 @@ namespace MediaBrowser.Api.Playback.Progressive } } - return new ImageService(UserManager, LibraryManager, ApplicationPaths, null, ItemRepository) + return new ImageService(UserManager, LibraryManager, ApplicationPaths, null, ItemRepository, DtoService) { Logger = Logger, RequestContext = RequestContext, @@ -342,7 +343,7 @@ namespace MediaBrowser.Api.Playback.Progressive ApiEntryPoint.Instance.OnTranscodeBeginRequest(outputPath, TranscodingJobType.Progressive); } - var result = new ProgressiveStreamWriter(outputPath, state, Logger); + var result = new ProgressiveStreamWriter(outputPath, Logger); result.Options["Accept-Ranges"] = "none"; result.Options["Content-Type"] = contentType; diff --git a/MediaBrowser.Api/Playback/Progressive/ProgressiveStreamWriter.cs b/MediaBrowser.Api/Playback/Progressive/ProgressiveStreamWriter.cs index 6eb3eb6430..c967a0d015 100644 --- a/MediaBrowser.Api/Playback/Progressive/ProgressiveStreamWriter.cs +++ b/MediaBrowser.Api/Playback/Progressive/ProgressiveStreamWriter.cs @@ -12,7 +12,6 @@ namespace MediaBrowser.Api.Playback.Progressive public class ProgressiveStreamWriter : IStreamWriter, IHasOptions { private string Path { get; set; } - private StreamState State { get; set; } private ILogger Logger { get; set; } /// @@ -32,12 +31,10 @@ namespace MediaBrowser.Api.Playback.Progressive /// Initializes a new instance of the class. /// /// The path. - /// The state. /// The logger. - public ProgressiveStreamWriter(string path, StreamState state, ILogger logger) + public ProgressiveStreamWriter(string path, ILogger logger) { Path = path; - State = state; Logger = logger; } diff --git a/MediaBrowser.Api/Playback/Progressive/VideoService.cs b/MediaBrowser.Api/Playback/Progressive/VideoService.cs index 851a46edc6..eb53bc2cee 100644 --- a/MediaBrowser.Api/Playback/Progressive/VideoService.cs +++ b/MediaBrowser.Api/Playback/Progressive/VideoService.cs @@ -1,5 +1,6 @@ using MediaBrowser.Common.MediaInfo; using MediaBrowser.Controller; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; @@ -60,8 +61,8 @@ namespace MediaBrowser.Api.Playback.Progressive /// The library manager. /// The iso manager. /// The media encoder. - public VideoService(IServerApplicationPaths appPaths, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IItemRepository itemRepo) - : base(appPaths, userManager, libraryManager, isoManager, mediaEncoder, itemRepo) + public VideoService(IServerApplicationPaths appPaths, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IItemRepository itemRepo, IDtoService dtoService) + : base(appPaths, userManager, libraryManager, isoManager, mediaEncoder, itemRepo, dtoService) { } diff --git a/MediaBrowser.Api/SearchService.cs b/MediaBrowser.Api/SearchService.cs index f889706c04..33b7422e6d 100644 --- a/MediaBrowser.Api/SearchService.cs +++ b/MediaBrowser.Api/SearchService.cs @@ -65,6 +65,7 @@ namespace MediaBrowser.Api /// private readonly ILibrarySearchEngine _searchEngine; private readonly ILibraryManager _libraryManager; + private readonly IDtoService _dtoService; /// /// Initializes a new instance of the class. @@ -72,11 +73,12 @@ namespace MediaBrowser.Api /// The user manager. /// The search engine. /// The library manager. - public SearchService(IUserManager userManager, ILibrarySearchEngine searchEngine, ILibraryManager libraryManager) + public SearchService(IUserManager userManager, ILibrarySearchEngine searchEngine, ILibraryManager libraryManager, IDtoService dtoService) { _userManager = userManager; _searchEngine = searchEngine; _libraryManager = libraryManager; + _dtoService = dtoService; } /// @@ -149,7 +151,7 @@ namespace MediaBrowser.Api Name = item.Name, IndexNumber = item.IndexNumber, ParentIndexNumber = item.ParentIndexNumber, - ItemId = DtoBuilder.GetClientItemId(item), + ItemId = _dtoService.GetDtoId(item), Type = item.GetType().Name, MediaType = item.MediaType, MatchedTerm = hintInfo.MatchedTerm, diff --git a/MediaBrowser.Api/SessionsService.cs b/MediaBrowser.Api/SessionsService.cs index bd05c32509..a0ef4a9a36 100644 --- a/MediaBrowser.Api/SessionsService.cs +++ b/MediaBrowser.Api/SessionsService.cs @@ -180,13 +180,16 @@ namespace MediaBrowser.Api /// private readonly ISessionManager _sessionManager; + private readonly IDtoService _dtoService; + /// /// Initializes a new instance of the class. /// /// The session manager. - public SessionsService(ISessionManager sessionManager) + public SessionsService(ISessionManager sessionManager, IDtoService dtoService) { _sessionManager = sessionManager; + _dtoService = dtoService; } /// @@ -203,7 +206,7 @@ namespace MediaBrowser.Api result = result.Where(i => i.SupportsRemoteControl == request.SupportsRemoteControl.Value); } - return ToOptimizedResult(result.Select(SessionInfoDtoBuilder.GetSessionInfoDto).ToList()); + return ToOptimizedResult(result.Select(_dtoService.GetSessionInfoDto).ToList()); } public void Post(SendPlaystateCommand request) diff --git a/MediaBrowser.Api/SimilarItemsHelper.cs b/MediaBrowser.Api/SimilarItemsHelper.cs index 7af3b399ea..5d10afd2cf 100644 --- a/MediaBrowser.Api/SimilarItemsHelper.cs +++ b/MediaBrowser.Api/SimilarItemsHelper.cs @@ -87,23 +87,22 @@ namespace MediaBrowser.Api /// The item repository. /// The library manager. /// The user data repository. + /// The dto service. /// The logger. /// The request. /// The include in search. /// The get similarity score. /// ItemsResult. - internal static ItemsResult GetSimilarItemsResult(IUserManager userManager, IItemRepository itemRepository, ILibraryManager libraryManager, IUserDataRepository userDataRepository, ILogger logger, BaseGetSimilarItemsFromItem request, Func includeInSearch, Func getSimilarityScore) + internal static ItemsResult GetSimilarItemsResult(IUserManager userManager, IItemRepository itemRepository, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IDtoService dtoService, ILogger logger, BaseGetSimilarItemsFromItem request, Func includeInSearch, Func getSimilarityScore) { var user = request.UserId.HasValue ? userManager.GetUserById(request.UserId.Value) : null; var item = string.IsNullOrEmpty(request.Id) ? (request.UserId.HasValue ? user.RootFolder : - (Folder)libraryManager.RootFolder) : DtoBuilder.GetItemByClientId(request.Id, userManager, libraryManager, request.UserId); + (Folder)libraryManager.RootFolder) : dtoService.GetItemByDtoId(request.Id, request.UserId); var fields = request.GetItemFields().ToList(); - var dtoBuilder = new DtoBuilder(logger, libraryManager, userDataRepository, itemRepository); - var inputItems = user == null ? libraryManager.RootFolder.RecursiveChildren : user.RootFolder.GetRecursiveChildren(user); @@ -113,7 +112,7 @@ namespace MediaBrowser.Api var result = new ItemsResult { - Items = items.Take(request.Limit ?? items.Length).Select(i => dtoBuilder.GetBaseItemDto(i, fields, user)).Select(t => t.Result).ToArray(), + Items = items.Take(request.Limit ?? items.Length).Select(i => dtoService.GetBaseItemDto(i, fields, user)).Select(t => t.Result).ToArray(), TotalRecordCount = items.Length }; diff --git a/MediaBrowser.Api/TrailersService.cs b/MediaBrowser.Api/TrailersService.cs index ba544a49b3..c6336847a8 100644 --- a/MediaBrowser.Api/TrailersService.cs +++ b/MediaBrowser.Api/TrailersService.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Dto; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; @@ -35,19 +36,21 @@ namespace MediaBrowser.Api private readonly ILibraryManager _libraryManager; private readonly IItemRepository _itemRepo; - + private readonly IDtoService _dtoService; + /// /// Initializes a new instance of the class. /// /// The user manager. /// The user data repository. /// The library manager. - public TrailersService(IUserManager userManager, IUserDataRepository userDataRepository, ILibraryManager libraryManager, IItemRepository itemRepo) + public TrailersService(IUserManager userManager, IUserDataRepository userDataRepository, ILibraryManager libraryManager, IItemRepository itemRepo, IDtoService dtoService) { _userManager = userManager; _userDataRepository = userDataRepository; _libraryManager = libraryManager; _itemRepo = itemRepo; + _dtoService = dtoService; } /// @@ -61,6 +64,7 @@ namespace MediaBrowser.Api _itemRepo, _libraryManager, _userDataRepository, + _dtoService, Logger, request, item => item is Movie || item is Trailer, SimilarItemsHelper.GetSimiliarityScore); diff --git a/MediaBrowser.Api/TvShowsService.cs b/MediaBrowser.Api/TvShowsService.cs index cdb27fb0c4..0e0493747d 100644 --- a/MediaBrowser.Api/TvShowsService.cs +++ b/MediaBrowser.Api/TvShowsService.cs @@ -101,19 +101,21 @@ namespace MediaBrowser.Api private readonly ILibraryManager _libraryManager; private readonly IItemRepository _itemRepo; - + private readonly IDtoService _dtoService; + /// /// Initializes a new instance of the class. /// /// The user manager. /// The user data repository. /// The library manager. - public TvShowsService(IUserManager userManager, IUserDataRepository userDataRepository, ILibraryManager libraryManager, IItemRepository itemRepo) + public TvShowsService(IUserManager userManager, IUserDataRepository userDataRepository, ILibraryManager libraryManager, IItemRepository itemRepo, IDtoService dtoService) { _userManager = userManager; _userDataRepository = userDataRepository; _libraryManager = libraryManager; _itemRepo = itemRepo; + _dtoService = dtoService; } /// @@ -127,6 +129,7 @@ namespace MediaBrowser.Api _itemRepo, _libraryManager, _userDataRepository, + _dtoService, Logger, request, item => item is Series, SimilarItemsHelper.GetSimiliarityScore); @@ -253,9 +256,7 @@ namespace MediaBrowser.Api /// Task. private Task GetItemDtos(IEnumerable pagedItems, User user, List fields) { - var dtoBuilder = new DtoBuilder(Logger, _libraryManager, _userDataRepository, _itemRepo); - - return Task.WhenAll(pagedItems.Select(i => dtoBuilder.GetBaseItemDto(i, fields, user))); + return Task.WhenAll(pagedItems.Select(i => _dtoService.GetBaseItemDto(i, fields, user))); } /// diff --git a/MediaBrowser.Api/UserLibrary/ArtistsService.cs b/MediaBrowser.Api/UserLibrary/ArtistsService.cs index f65de2e69c..3213b2e670 100644 --- a/MediaBrowser.Api/UserLibrary/ArtistsService.cs +++ b/MediaBrowser.Api/UserLibrary/ArtistsService.cs @@ -75,8 +75,8 @@ namespace MediaBrowser.Api.UserLibrary /// The library manager. /// The user data repository. /// The item repo. - public ArtistsService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepo) - : base(userManager, libraryManager, userDataRepository, itemRepo) + public ArtistsService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepo, IDtoService dtoService) + : base(userManager, libraryManager, userDataRepository, itemRepo, dtoService) { } @@ -104,16 +104,14 @@ namespace MediaBrowser.Api.UserLibrary // Get everything var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)); - var builder = new DtoBuilder(Logger, LibraryManager, UserDataRepository, ItemRepository); - if (request.UserId.HasValue) { var user = UserManager.GetUserById(request.UserId.Value); - return await builder.GetBaseItemDto(item, fields.ToList(), user).ConfigureAwait(false); + return await DtoService.GetBaseItemDto(item, fields.ToList(), user).ConfigureAwait(false); } - return await builder.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false); + return await DtoService.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false); } /// diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs index 0b54541e5e..8bb07caa90 100644 --- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs +++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs @@ -30,6 +30,7 @@ namespace MediaBrowser.Api.UserLibrary protected readonly ILibraryManager LibraryManager; protected readonly IUserDataRepository UserDataRepository; protected readonly IItemRepository ItemRepository; + protected IDtoService DtoService { get; private set; } /// /// Initializes a new instance of the class. @@ -37,12 +38,13 @@ namespace MediaBrowser.Api.UserLibrary /// The user manager. /// The library manager. /// The user data repository. - protected BaseItemsByNameService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepository) + protected BaseItemsByNameService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepository, IDtoService dtoService) { UserManager = userManager; LibraryManager = libraryManager; UserDataRepository = userDataRepository; ItemRepository = itemRepository; + DtoService = dtoService; } /// @@ -58,11 +60,11 @@ namespace MediaBrowser.Api.UserLibrary if (request.UserId.HasValue) { user = UserManager.GetUserById(request.UserId.Value); - item = string.IsNullOrEmpty(request.ParentId) ? user.RootFolder : DtoBuilder.GetItemByClientId(request.ParentId, UserManager, LibraryManager, user.Id); + item = string.IsNullOrEmpty(request.ParentId) ? user.RootFolder : DtoService.GetItemByDtoId(request.ParentId, user.Id); } else { - item = string.IsNullOrEmpty(request.ParentId) ? LibraryManager.RootFolder : DtoBuilder.GetItemByClientId(request.ParentId, UserManager, LibraryManager); + item = string.IsNullOrEmpty(request.ParentId) ? LibraryManager.RootFolder : DtoService.GetItemByDtoId(request.ParentId); } IEnumerable items; @@ -285,8 +287,8 @@ namespace MediaBrowser.Api.UserLibrary return null; } - var dto = user == null ? await new DtoBuilder(Logger, LibraryManager, UserDataRepository, ItemRepository).GetBaseItemDto(item, fields).ConfigureAwait(false) : - await new DtoBuilder(Logger, LibraryManager, UserDataRepository, ItemRepository).GetBaseItemDto(item, fields, user).ConfigureAwait(false); + var dto = user == null ? await DtoService.GetBaseItemDto(item, fields).ConfigureAwait(false) : + await DtoService.GetBaseItemDto(item, fields, user).ConfigureAwait(false); if (fields.Contains(ItemFields.ItemCounts)) { diff --git a/MediaBrowser.Api/UserLibrary/GameGenresService.cs b/MediaBrowser.Api/UserLibrary/GameGenresService.cs index 792cdb8540..50ee098266 100644 --- a/MediaBrowser.Api/UserLibrary/GameGenresService.cs +++ b/MediaBrowser.Api/UserLibrary/GameGenresService.cs @@ -63,8 +63,8 @@ namespace MediaBrowser.Api.UserLibrary public class GameGenresService : BaseItemsByNameService { - public GameGenresService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepo) - : base(userManager, libraryManager, userDataRepository, itemRepo) + public GameGenresService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepo, IDtoService dtoService) + : base(userManager, libraryManager, userDataRepository, itemRepo, dtoService) { } @@ -92,16 +92,14 @@ namespace MediaBrowser.Api.UserLibrary // Get everything var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)); - var builder = new DtoBuilder(Logger, LibraryManager, UserDataRepository, ItemRepository); - if (request.UserId.HasValue) { var user = UserManager.GetUserById(request.UserId.Value); - return await builder.GetBaseItemDto(item, fields.ToList(), user).ConfigureAwait(false); + return await DtoService.GetBaseItemDto(item, fields.ToList(), user).ConfigureAwait(false); } - return await builder.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false); + return await DtoService.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false); } /// diff --git a/MediaBrowser.Api/UserLibrary/GenresService.cs b/MediaBrowser.Api/UserLibrary/GenresService.cs index f10ca9cf4c..83405bf52f 100644 --- a/MediaBrowser.Api/UserLibrary/GenresService.cs +++ b/MediaBrowser.Api/UserLibrary/GenresService.cs @@ -69,8 +69,8 @@ namespace MediaBrowser.Api.UserLibrary /// public class GenresService : BaseItemsByNameService { - public GenresService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepo) - : base(userManager, libraryManager, userDataRepository, itemRepo) + public GenresService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepo, IDtoService dtoService) + : base(userManager, libraryManager, userDataRepository, itemRepo, dtoService) { } @@ -98,16 +98,14 @@ namespace MediaBrowser.Api.UserLibrary // Get everything var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)); - var builder = new DtoBuilder(Logger, LibraryManager, UserDataRepository, ItemRepository); - if (request.UserId.HasValue) { var user = UserManager.GetUserById(request.UserId.Value); - return await builder.GetBaseItemDto(item, fields.ToList(), user).ConfigureAwait(false); + return await DtoService.GetBaseItemDto(item, fields.ToList(), user).ConfigureAwait(false); } - return await builder.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false); + return await DtoService.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false); } /// diff --git a/MediaBrowser.Api/UserLibrary/ItemByNameUserDataService.cs b/MediaBrowser.Api/UserLibrary/ItemByNameUserDataService.cs index 1e990b3e93..911fd03b30 100644 --- a/MediaBrowser.Api/UserLibrary/ItemByNameUserDataService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemByNameUserDataService.cs @@ -138,16 +138,18 @@ namespace MediaBrowser.Api.UserLibrary /// The library manager /// protected readonly ILibraryManager LibraryManager; + private readonly IDtoService _dtoService; /// /// Initializes a new instance of the class. /// /// The user data repository. /// The library manager. - public ItemByNameUserDataService(IUserDataRepository userDataRepository, ILibraryManager libraryManager) + public ItemByNameUserDataService(IUserDataRepository userDataRepository, ILibraryManager libraryManager, IDtoService dtoService) { UserDataRepository = userDataRepository; LibraryManager = libraryManager; + _dtoService = dtoService; } /// @@ -230,7 +232,7 @@ namespace MediaBrowser.Api.UserLibrary data = UserDataRepository.GetUserData(userId, key); - return DtoBuilder.GetUserItemDataDto(data); + return _dtoService.GetUserItemDataDto(data); } /// @@ -256,7 +258,7 @@ namespace MediaBrowser.Api.UserLibrary data = UserDataRepository.GetUserData(userId, key); - return DtoBuilder.GetUserItemDataDto(data); + return _dtoService.GetUserItemDataDto(data); } } } diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index d06941bb81..5013f685a8 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -210,8 +210,8 @@ namespace MediaBrowser.Api.UserLibrary private readonly ILibrarySearchEngine _searchEngine; private readonly ILocalizationManager _localization; - private readonly IItemRepository _itemRepo; - + private readonly IDtoService _dtoService; + /// /// Initializes a new instance of the class. /// @@ -219,14 +219,14 @@ namespace MediaBrowser.Api.UserLibrary /// The library manager. /// The search engine. /// The user data repository. - public ItemsService(IUserManager userManager, ILibraryManager libraryManager, ILibrarySearchEngine searchEngine, IUserDataRepository userDataRepository, ILocalizationManager localization, IItemRepository itemRepo) + public ItemsService(IUserManager userManager, ILibraryManager libraryManager, ILibrarySearchEngine searchEngine, IUserDataRepository userDataRepository, ILocalizationManager localization, IDtoService dtoService) { _userManager = userManager; _libraryManager = libraryManager; _searchEngine = searchEngine; _userDataRepository = userDataRepository; _localization = localization; - _itemRepo = itemRepo; + _dtoService = dtoService; } /// @@ -275,9 +275,7 @@ namespace MediaBrowser.Api.UserLibrary var fields = request.GetItemFields().ToList(); - var dtoBuilder = new DtoBuilder(Logger, _libraryManager, _userDataRepository, _itemRepo); - - var returnItems = await Task.WhenAll(pagedItems.Select(i => dtoBuilder.GetBaseItemDto(i, fields, user))).ConfigureAwait(false); + var returnItems = await Task.WhenAll(pagedItems.Select(i => _dtoService.GetBaseItemDto(i, fields, user))).ConfigureAwait(false); return new ItemsResult { @@ -295,7 +293,7 @@ namespace MediaBrowser.Api.UserLibrary /// private IEnumerable GetItemsToSerialize(GetItems request, User user) { - var item = string.IsNullOrEmpty(request.ParentId) ? user.RootFolder : DtoBuilder.GetItemByClientId(request.ParentId, _userManager, _libraryManager, user.Id); + var item = string.IsNullOrEmpty(request.ParentId) ? user.RootFolder : _dtoService.GetItemByDtoId(request.ParentId, user.Id); // Default list type = children @@ -303,7 +301,7 @@ namespace MediaBrowser.Api.UserLibrary { var idList = request.Ids.Split(',').ToList(); - return idList.Select(i => DtoBuilder.GetItemByClientId(i, _userManager, _libraryManager, user.Id)); + return idList.Select(i => _dtoService.GetItemByDtoId(i, user.Id)); } if (request.Recursive) @@ -492,7 +490,7 @@ namespace MediaBrowser.Api.UserLibrary if (!string.IsNullOrEmpty(request.AdjacentTo)) { - var item = DtoBuilder.GetItemByClientId(request.AdjacentTo, _userManager, _libraryManager); + var item = _dtoService.GetItemByDtoId(request.AdjacentTo); var allSiblings = item.Parent.GetChildren(user, true).OrderBy(i => i.SortName).ToList(); diff --git a/MediaBrowser.Api/UserLibrary/MusicGenresService.cs b/MediaBrowser.Api/UserLibrary/MusicGenresService.cs index b4d1b82dd9..d9f0016fbc 100644 --- a/MediaBrowser.Api/UserLibrary/MusicGenresService.cs +++ b/MediaBrowser.Api/UserLibrary/MusicGenresService.cs @@ -63,8 +63,8 @@ namespace MediaBrowser.Api.UserLibrary public class MusicGenresService : BaseItemsByNameService { - public MusicGenresService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepo) - : base(userManager, libraryManager, userDataRepository, itemRepo) + public MusicGenresService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepo, IDtoService dtoService) + : base(userManager, libraryManager, userDataRepository, itemRepo, dtoService) { } @@ -92,16 +92,14 @@ namespace MediaBrowser.Api.UserLibrary // Get everything var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)); - var builder = new DtoBuilder(Logger, LibraryManager, UserDataRepository, ItemRepository); - if (request.UserId.HasValue) { var user = UserManager.GetUserById(request.UserId.Value); - return await builder.GetBaseItemDto(item, fields.ToList(), user).ConfigureAwait(false); + return await DtoService.GetBaseItemDto(item, fields.ToList(), user).ConfigureAwait(false); } - return await builder.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false); + return await DtoService.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false); } /// diff --git a/MediaBrowser.Api/UserLibrary/PersonsService.cs b/MediaBrowser.Api/UserLibrary/PersonsService.cs index 37df763d2c..a21c539762 100644 --- a/MediaBrowser.Api/UserLibrary/PersonsService.cs +++ b/MediaBrowser.Api/UserLibrary/PersonsService.cs @@ -6,7 +6,6 @@ using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.Dto; -using MediaBrowser.Model.Entities; using MediaBrowser.Model.Querying; using ServiceStack.ServiceHost; using System; @@ -86,8 +85,8 @@ namespace MediaBrowser.Api.UserLibrary /// The library manager. /// The user data repository. /// The item repo. - public PersonsService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepo) - : base(userManager, libraryManager, userDataRepository, itemRepo) + public PersonsService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepo, IDtoService dtoService) + : base(userManager, libraryManager, userDataRepository, itemRepo, dtoService) { } @@ -114,17 +113,15 @@ namespace MediaBrowser.Api.UserLibrary // Get everything var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)); - - var builder = new DtoBuilder(Logger, LibraryManager, UserDataRepository, ItemRepository); - + if (request.UserId.HasValue) { var user = UserManager.GetUserById(request.UserId.Value); - return await builder.GetBaseItemDto(item, fields.ToList(), user).ConfigureAwait(false); + return await DtoService.GetBaseItemDto(item, fields.ToList(), user).ConfigureAwait(false); } - return await builder.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false); + return await DtoService.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false); } /// diff --git a/MediaBrowser.Api/UserLibrary/StudiosService.cs b/MediaBrowser.Api/UserLibrary/StudiosService.cs index e19c2bc20a..f58adb1fa4 100644 --- a/MediaBrowser.Api/UserLibrary/StudiosService.cs +++ b/MediaBrowser.Api/UserLibrary/StudiosService.cs @@ -70,8 +70,8 @@ namespace MediaBrowser.Api.UserLibrary /// public class StudiosService : BaseItemsByNameService { - public StudiosService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepo) - : base(userManager, libraryManager, userDataRepository, itemRepo) + public StudiosService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepo, IDtoService dtoService) + : base(userManager, libraryManager, userDataRepository, itemRepo, dtoService) { } @@ -98,17 +98,15 @@ namespace MediaBrowser.Api.UserLibrary // Get everything var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)); - - var builder = new DtoBuilder(Logger, LibraryManager, UserDataRepository, ItemRepository); - + if (request.UserId.HasValue) { var user = UserManager.GetUserById(request.UserId.Value); - return await builder.GetBaseItemDto(item, fields.ToList(), user).ConfigureAwait(false); + return await DtoService.GetBaseItemDto(item, fields.ToList(), user).ConfigureAwait(false); } - return await builder.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false); + return await DtoService.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false); } /// diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs index b80d90e41e..4e8ef7d8dc 100644 --- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs +++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs @@ -366,6 +366,7 @@ namespace MediaBrowser.Api.UserLibrary private readonly IItemRepository _itemRepo; private readonly ISessionManager _sessionManager; + private readonly IDtoService _dtoService; /// /// Initializes a new instance of the class. @@ -375,13 +376,14 @@ namespace MediaBrowser.Api.UserLibrary /// The user data repository. /// The item repo. /// jsonSerializer - public UserLibraryService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepo, ISessionManager sessionManager) + public UserLibraryService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepo, ISessionManager sessionManager, IDtoService dtoService) { _userManager = userManager; _libraryManager = libraryManager; _userDataRepository = userDataRepository; _itemRepo = itemRepo; _sessionManager = sessionManager; + _dtoService = dtoService; } /// @@ -400,13 +402,11 @@ namespace MediaBrowser.Api.UserLibrary { var user = _userManager.GetUserById(request.UserId); - var item = string.IsNullOrEmpty(request.Id) ? user.RootFolder : DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager, user.Id); + var item = string.IsNullOrEmpty(request.Id) ? user.RootFolder : _dtoService.GetItemByDtoId(request.Id, user.Id); // Get everything var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)).ToList(); - var dtoBuilder = new DtoBuilder(Logger, _libraryManager, _userDataRepository, _itemRepo); - var movie = item as Movie; // Get them from the db @@ -418,7 +418,7 @@ namespace MediaBrowser.Api.UserLibrary var tasks = movie.SpecialFeatureIds .Select(_itemRepo.RetrieveItem) .OrderBy(i => i.SortName) - .Select(i => dtoBuilder.GetBaseItemDto(i, fields, user, movie1)); + .Select(i => _dtoService.GetBaseItemDto(i, fields, user, movie1)); return Task.WhenAll(tasks); } @@ -446,7 +446,7 @@ namespace MediaBrowser.Api.UserLibrary return DateTime.MinValue; }) .ThenBy(i => i.SortName) - .Select(i => dtoBuilder.GetBaseItemDto(i, fields, user)); + .Select(i => _dtoService.GetBaseItemDto(i, fields, user)); return Task.WhenAll(tasks); } @@ -470,17 +470,15 @@ namespace MediaBrowser.Api.UserLibrary { var user = _userManager.GetUserById(request.UserId); - var item = string.IsNullOrEmpty(request.Id) ? user.RootFolder : DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager, user.Id); + var item = string.IsNullOrEmpty(request.Id) ? user.RootFolder : _dtoService.GetItemByDtoId(request.Id, user.Id); // Get everything var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)).ToList(); - var dtoBuilder = new DtoBuilder(Logger, _libraryManager, _userDataRepository, _itemRepo); - var tasks = item.LocalTrailerIds .Select(_itemRepo.RetrieveItem) .OrderBy(i => i.SortName) - .Select(i => dtoBuilder.GetBaseItemDto(i, fields, user, item)); + .Select(i => _dtoService.GetBaseItemDto(i, fields, user, item)); return Task.WhenAll(tasks); } @@ -494,14 +492,12 @@ namespace MediaBrowser.Api.UserLibrary { var user = _userManager.GetUserById(request.UserId); - var item = string.IsNullOrEmpty(request.Id) ? user.RootFolder : DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager, user.Id); + var item = string.IsNullOrEmpty(request.Id) ? user.RootFolder : _dtoService.GetItemByDtoId(request.Id, user.Id); // Get everything var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)).ToList(); - var dtoBuilder = new DtoBuilder(Logger, _libraryManager, _userDataRepository, _itemRepo); - - var result = dtoBuilder.GetBaseItemDto(item, fields, user).Result; + var result = _dtoService.GetBaseItemDto(item, fields, user).Result; return ToOptimizedResult(result); } @@ -520,9 +516,7 @@ namespace MediaBrowser.Api.UserLibrary // Get everything var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)).ToList(); - var dtoBuilder = new DtoBuilder(Logger, _libraryManager, _userDataRepository, _itemRepo); - - var result = dtoBuilder.GetBaseItemDto(item, fields, user).Result; + var result = _dtoService.GetBaseItemDto(item, fields, user).Result; return ToOptimizedResult(result); } @@ -536,7 +530,7 @@ namespace MediaBrowser.Api.UserLibrary { var user = _userManager.GetUserById(request.UserId); - var item = string.IsNullOrEmpty(request.Id) ? user.RootFolder : DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager, user.Id); + var item = string.IsNullOrEmpty(request.Id) ? user.RootFolder : _dtoService.GetItemByDtoId(request.Id, user.Id); var result = _libraryManager.GetIntros(item, user); @@ -569,7 +563,7 @@ namespace MediaBrowser.Api.UserLibrary { var user = _userManager.GetUserById(userId); - var item = string.IsNullOrEmpty(itemId) ? user.RootFolder : DtoBuilder.GetItemByClientId(itemId, _userManager, _libraryManager, user.Id); + var item = string.IsNullOrEmpty(itemId) ? user.RootFolder : _dtoService.GetItemByDtoId(itemId, user.Id); var key = item.GetUserDataKey(); @@ -583,7 +577,7 @@ namespace MediaBrowser.Api.UserLibrary data = _userDataRepository.GetUserData(user.Id, key); - return DtoBuilder.GetUserItemDataDto(data); + return _dtoService.GetUserItemDataDto(data); } /// @@ -612,7 +606,7 @@ namespace MediaBrowser.Api.UserLibrary { var user = _userManager.GetUserById(userId); - var item = string.IsNullOrEmpty(itemId) ? user.RootFolder : DtoBuilder.GetItemByClientId(itemId, _userManager, _libraryManager, user.Id); + var item = string.IsNullOrEmpty(itemId) ? user.RootFolder : _dtoService.GetItemByDtoId(itemId, user.Id); var key = item.GetUserDataKey(); @@ -625,7 +619,7 @@ namespace MediaBrowser.Api.UserLibrary data = _userDataRepository.GetUserData(user.Id, key); - return DtoBuilder.GetUserItemDataDto(data); + return _dtoService.GetUserItemDataDto(data); } /// @@ -666,7 +660,7 @@ namespace MediaBrowser.Api.UserLibrary { var user = _userManager.GetUserById(request.UserId); - var item = DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager, user.Id); + var item = _dtoService.GetItemByDtoId(request.Id, user.Id); _sessionManager.OnPlaybackStart(item, GetSession().Id); } @@ -679,7 +673,7 @@ namespace MediaBrowser.Api.UserLibrary { var user = _userManager.GetUserById(request.UserId); - var item = DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager, user.Id); + var item = _dtoService.GetItemByDtoId(request.Id, user.Id); var task = _sessionManager.OnPlaybackProgress(item, request.PositionTicks, request.IsPaused, request.IsMuted, GetSession().Id); @@ -694,7 +688,7 @@ namespace MediaBrowser.Api.UserLibrary { var user = _userManager.GetUserById(request.UserId); - var item = DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager, user.Id); + var item = _dtoService.GetItemByDtoId(request.Id, user.Id); var task = _sessionManager.OnPlaybackStopped(item, request.PositionTicks, GetSession().Id); @@ -723,11 +717,11 @@ namespace MediaBrowser.Api.UserLibrary /// Task. private async Task UpdatePlayedStatus(User user, string itemId, bool wasPlayed) { - var item = DtoBuilder.GetItemByClientId(itemId, _userManager, _libraryManager, user.Id); + var item = _dtoService.GetItemByDtoId(itemId, user.Id); await item.SetPlayedStatus(user, wasPlayed, _userDataRepository).ConfigureAwait(false); - return DtoBuilder.GetUserItemDataDto(_userDataRepository.GetUserData(user.Id, item.GetUserDataKey())); + return _dtoService.GetUserItemDataDto(_userDataRepository.GetUserData(user.Id, item.GetUserDataKey())); } } } diff --git a/MediaBrowser.Api/UserLibrary/YearsService.cs b/MediaBrowser.Api/UserLibrary/YearsService.cs index bfd493240c..b153b6e10d 100644 --- a/MediaBrowser.Api/UserLibrary/YearsService.cs +++ b/MediaBrowser.Api/UserLibrary/YearsService.cs @@ -54,8 +54,8 @@ namespace MediaBrowser.Api.UserLibrary /// private static readonly CultureInfo UsCulture = new CultureInfo("en-US"); - public YearsService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepo) - : base(userManager, libraryManager, userDataRepository, itemRepo) + public YearsService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepo, IDtoService dtoService) + : base(userManager, libraryManager, userDataRepository, itemRepo, dtoService) { } @@ -82,17 +82,15 @@ namespace MediaBrowser.Api.UserLibrary // Get everything var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)); - - var builder = new DtoBuilder(Logger, LibraryManager, UserDataRepository, ItemRepository); - + if (request.UserId.HasValue) { var user = UserManager.GetUserById(request.UserId.Value); - return await builder.GetBaseItemDto(item, fields.ToList(), user).ConfigureAwait(false); + return await DtoService.GetBaseItemDto(item, fields.ToList(), user).ConfigureAwait(false); } - return await builder.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false); + return await DtoService.GetBaseItemDto(item, fields.ToList()).ConfigureAwait(false); } /// diff --git a/MediaBrowser.Api/UserService.cs b/MediaBrowser.Api/UserService.cs index 1e928c301e..5c8d6a868d 100644 --- a/MediaBrowser.Api/UserService.cs +++ b/MediaBrowser.Api/UserService.cs @@ -171,16 +171,15 @@ namespace MediaBrowser.Api /// The _user manager /// private readonly IUserManager _userManager; - private readonly ILibraryManager _libraryManager; + private readonly IDtoService _dtoService; /// /// Initializes a new instance of the class. /// /// The XML serializer. /// The user manager. - /// The library manager. /// xmlSerializer - public UserService(IXmlSerializer xmlSerializer, IUserManager userManager, ILibraryManager libraryManager) + public UserService(IXmlSerializer xmlSerializer, IUserManager userManager, IDtoService dtoService) : base() { if (xmlSerializer == null) @@ -190,7 +189,7 @@ namespace MediaBrowser.Api _xmlSerializer = xmlSerializer; _userManager = userManager; - _libraryManager = libraryManager; + _dtoService = dtoService; } public object Get(GetPublicUsers request) @@ -209,8 +208,6 @@ namespace MediaBrowser.Api /// System.Object. public object Get(GetUsers request) { - var dtoBuilder = new UserDtoBuilder(Logger); - var users = _userManager.Users; if (request.IsDisabled.HasValue) @@ -223,7 +220,7 @@ namespace MediaBrowser.Api users = users.Where(i => i.Configuration.IsHidden == request.IsHidden.Value); } - var tasks = users.OrderBy(u => u.Name).Select(dtoBuilder.GetUserDto).Select(i => i.Result); + var tasks = users.OrderBy(u => u.Name).Select(_dtoService.GetUserDto).Select(i => i.Result); return ToOptimizedResult(tasks.ToList()); } @@ -242,9 +239,7 @@ namespace MediaBrowser.Api throw new ResourceNotFoundException("User not found"); } - var dtoBuilder = new UserDtoBuilder(Logger); - - var result = dtoBuilder.GetUserDto(user).Result; + var result = _dtoService.GetUserDto(user).Result; return ToOptimizedResult(result); } @@ -310,7 +305,7 @@ namespace MediaBrowser.Api var result = new AuthenticationResult { - User = await new UserDtoBuilder(Logger).GetUserDto(user).ConfigureAwait(false) + User = await _dtoService.GetUserDto(user).ConfigureAwait(false) }; return result; @@ -409,9 +404,7 @@ namespace MediaBrowser.Api newUser.UpdateConfiguration(dtoUser.Configuration, _xmlSerializer); - var dtoBuilder = new UserDtoBuilder(Logger); - - var result = dtoBuilder.GetUserDto(newUser).Result; + var result = _dtoService.GetUserDto(newUser).Result; return ToOptimizedResult(result); } diff --git a/MediaBrowser.Api/VideosService.cs b/MediaBrowser.Api/VideosService.cs index 3208ad46dc..9827ac50fe 100644 --- a/MediaBrowser.Api/VideosService.cs +++ b/MediaBrowser.Api/VideosService.cs @@ -30,14 +30,14 @@ namespace MediaBrowser.Api private readonly ILibraryManager _libraryManager; private readonly IUserManager _userManager; - private readonly IUserDataRepository _userDataRepository; + private readonly IDtoService _dtoService; - public VideosService(IItemRepository itemRepo, ILibraryManager libraryManager, IUserManager userManager, IUserDataRepository userDataRepository) + public VideosService(IItemRepository itemRepo, ILibraryManager libraryManager, IUserManager userManager, IDtoService dtoService) { _itemRepo = itemRepo; _libraryManager = libraryManager; _userManager = userManager; - _userDataRepository = userDataRepository; + _dtoService = dtoService; } /// @@ -53,20 +53,18 @@ namespace MediaBrowser.Api ? (request.UserId.HasValue ? user.RootFolder : (Folder)_libraryManager.RootFolder) - : DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager, request.UserId); + : _dtoService.GetItemByDtoId(request.Id, request.UserId); // Get everything var fields = Enum.GetNames(typeof(ItemFields)) .Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)) .ToList(); - var dtoBuilder = new DtoBuilder(Logger, _libraryManager, _userDataRepository, _itemRepo); - var video = (Video)item; var items = video.AdditionalPartIds.Select(_itemRepo.RetrieveItem) .OrderBy(i => i.SortName) - .Select(i => dtoBuilder.GetBaseItemDto(i, fields, user, video)) + .Select(i => _dtoService.GetBaseItemDto(i, fields, user, video)) .Select(t => t.Result) .ToArray(); diff --git a/MediaBrowser.Api/WebSocket/SessionInfoWebSocketListener.cs b/MediaBrowser.Api/WebSocket/SessionInfoWebSocketListener.cs index f010ac3757..38139645eb 100644 --- a/MediaBrowser.Api/WebSocket/SessionInfoWebSocketListener.cs +++ b/MediaBrowser.Api/WebSocket/SessionInfoWebSocketListener.cs @@ -14,6 +14,8 @@ namespace MediaBrowser.Api.WebSocket /// class SessionInfoWebSocketListener : BasePeriodicWebSocketListener, object> { + private readonly IDtoService _dtoService; + /// /// Gets the name. /// @@ -33,10 +35,11 @@ namespace MediaBrowser.Api.WebSocket /// /// The logger. /// The session manager. - public SessionInfoWebSocketListener(ILogger logger, ISessionManager sessionManager) + public SessionInfoWebSocketListener(ILogger logger, ISessionManager sessionManager, IDtoService dtoService) : base(logger) { _sessionManager = sessionManager; + _dtoService = dtoService; } /// @@ -46,7 +49,7 @@ namespace MediaBrowser.Api.WebSocket /// Task{SystemInfo}. protected override Task> GetDataToSend(object state) { - return Task.FromResult(_sessionManager.Sessions.Select(SessionInfoDtoBuilder.GetSessionInfoDto)); + return Task.FromResult(_sessionManager.Sessions.Select(_dtoService.GetSessionInfoDto)); } } } diff --git a/MediaBrowser.Controller/Drawing/ImageManager.cs b/MediaBrowser.Controller/Drawing/ImageManager.cs index 2ccc0dc656..51ae6b7ca7 100644 --- a/MediaBrowser.Controller/Drawing/ImageManager.cs +++ b/MediaBrowser.Controller/Drawing/ImageManager.cs @@ -612,7 +612,7 @@ namespace MediaBrowser.Controller.Drawing /// The supported enhancers. /// System.String. /// originalImagePath - public async Task GetEnhancedImage(string originalImagePath, DateTime dateModified, BaseItem item, ImageType imageType, int imageIndex, IEnumerable supportedEnhancers) + public async Task GetEnhancedImage(string originalImagePath, DateTime dateModified, BaseItem item, ImageType imageType, int imageIndex, List supportedEnhancers) { if (string.IsNullOrEmpty(originalImagePath)) { diff --git a/MediaBrowser.Controller/Dto/IDtoService.cs b/MediaBrowser.Controller/Dto/IDtoService.cs new file mode 100644 index 0000000000..8a023832a6 --- /dev/null +++ b/MediaBrowser.Controller/Dto/IDtoService.cs @@ -0,0 +1,71 @@ +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Session; +using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Querying; +using MediaBrowser.Model.Session; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace MediaBrowser.Controller.Dto +{ + /// + /// Interface IDtoService + /// + public interface IDtoService + { + /// + /// Gets the user dto. + /// + /// The user. + /// Task{UserDto}. + Task GetUserDto(User user); + + /// + /// Gets the session info dto. + /// + /// The session. + /// SessionInfoDto. + SessionInfoDto GetSessionInfoDto(SessionInfo session); + + /// + /// Gets the base item info. + /// + /// The item. + /// BaseItemInfo. + BaseItemInfo GetBaseItemInfo(BaseItem item); + + /// + /// Gets the dto id. + /// + /// The item. + /// System.String. + string GetDtoId(BaseItem item); + + /// + /// Gets the user item data dto. + /// + /// The data. + /// UserItemDataDto. + UserItemDataDto GetUserItemDataDto(UserItemData data); + + /// + /// Gets the item by dto id. + /// + /// The id. + /// The user id. + /// BaseItem. + BaseItem GetItemByDtoId(string id, Guid? userId = null); + + /// + /// Gets the base item dto. + /// + /// The item. + /// The fields. + /// The user. + /// The owner. + /// Task{BaseItemDto}. + Task GetBaseItemDto(BaseItem item, List fields, User user = null, BaseItem owner = null); + } +} diff --git a/MediaBrowser.Controller/Dto/SessionInfoDtoBuilder.cs b/MediaBrowser.Controller/Dto/SessionInfoDtoBuilder.cs deleted file mode 100644 index 01baa73564..0000000000 --- a/MediaBrowser.Controller/Dto/SessionInfoDtoBuilder.cs +++ /dev/null @@ -1,50 +0,0 @@ -using MediaBrowser.Controller.Session; -using MediaBrowser.Model.Session; - -namespace MediaBrowser.Controller.Dto -{ - /// - /// Class SessionInfoDtoBuilder - /// - public static class SessionInfoDtoBuilder - { - /// - /// Gets the session info dto. - /// - /// The session. - /// SessionInfoDto. - public static SessionInfoDto GetSessionInfoDto(SessionInfo session) - { - var dto = new SessionInfoDto - { - Client = session.Client, - DeviceId = session.DeviceId, - DeviceName = session.DeviceName, - Id = session.Id.ToString("N"), - LastActivityDate = session.LastActivityDate, - NowPlayingPositionTicks = session.NowPlayingPositionTicks, - SupportsRemoteControl = session.SupportsRemoteControl, - IsPaused = session.IsPaused, - IsMuted = session.IsMuted, - NowViewingContext = session.NowViewingContext, - NowViewingItemId = session.NowViewingItemId, - NowViewingItemName = session.NowViewingItemName, - NowViewingItemType = session.NowViewingItemType, - ApplicationVersion = session.ApplicationVersion - }; - - if (session.NowPlayingItem != null) - { - dto.NowPlayingItem = DtoBuilder.GetBaseItemInfo(session.NowPlayingItem); - } - - if (session.User != null) - { - dto.UserId = session.User.Id.ToString("N"); - dto.UserName = session.User.Name; - } - - return dto; - } - } -} diff --git a/MediaBrowser.Controller/Dto/UserDtoBuilder.cs b/MediaBrowser.Controller/Dto/UserDtoBuilder.cs deleted file mode 100644 index 892bd5dd0e..0000000000 --- a/MediaBrowser.Controller/Dto/UserDtoBuilder.cs +++ /dev/null @@ -1,72 +0,0 @@ -using MediaBrowser.Controller.Entities; -using MediaBrowser.Model.Dto; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Logging; -using System; -using System.Threading.Tasks; - -namespace MediaBrowser.Controller.Dto -{ - /// - /// Class UserDtoBuilder - /// - public class UserDtoBuilder - { - /// - /// The _logger - /// - private readonly ILogger _logger; - - /// - /// Initializes a new instance of the class. - /// - /// The logger. - public UserDtoBuilder(ILogger logger) - { - _logger = logger; - } - - /// - /// Converts a User to a DTOUser - /// - /// The user. - /// DtoUser. - /// user - public async Task GetUserDto(User user) - { - if (user == null) - { - throw new ArgumentNullException("user"); - } - - var dto = new UserDto - { - Id = user.Id.ToString("N"), - Name = user.Name, - HasPassword = !String.IsNullOrEmpty(user.Password), - LastActivityDate = user.LastActivityDate, - LastLoginDate = user.LastLoginDate, - Configuration = user.Configuration - }; - - var image = user.PrimaryImagePath; - - if (!string.IsNullOrEmpty(image)) - { - dto.PrimaryImageTag = Kernel.Instance.ImageManager.GetImageCacheTag(user, ImageType.Primary, image); - - try - { - await DtoBuilder.AttachPrimaryImageAspectRatio(dto, user, _logger).ConfigureAwait(false); - } - catch (Exception ex) - { - // Have to use a catch-all unfortunately because some .net image methods throw plain Exceptions - _logger.ErrorException("Error generating PrimaryImageAspectRatio for {0}", ex, user.Name); - } - } - - return dto; - } - } -} diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 713f52180e..0d00d50ce5 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -71,10 +71,10 @@ Properties\SharedVersion.cs + - @@ -93,7 +93,6 @@ - @@ -128,7 +127,6 @@ - diff --git a/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs b/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs index 1cb43b43a9..bbe5ddbaae 100644 --- a/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs +++ b/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs @@ -1,12 +1,11 @@ -using System.Collections.Generic; -using MediaBrowser.Common.IO; +using MediaBrowser.Common.IO; using MediaBrowser.Common.MediaInfo; using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using System; +using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading; @@ -31,8 +30,6 @@ namespace MediaBrowser.Controller.MediaInfo /// The subtitle cache. internal FileSystemRepository SubtitleCache { get; set; } - private readonly ILibraryManager _libraryManager; - private readonly IServerApplicationPaths _appPaths; private readonly IMediaEncoder _encoder; private readonly ILogger _logger; @@ -43,15 +40,13 @@ namespace MediaBrowser.Controller.MediaInfo /// /// The app paths. /// The encoder. - /// The library manager. /// The logger. /// The item repo. /// zipClient - public FFMpegManager(IServerApplicationPaths appPaths, IMediaEncoder encoder, ILibraryManager libraryManager, ILogger logger, IItemRepository itemRepo) + public FFMpegManager(IServerApplicationPaths appPaths, IMediaEncoder encoder, ILogger logger, IItemRepository itemRepo) { _appPaths = appPaths; _encoder = encoder; - _libraryManager = libraryManager; _logger = logger; _itemRepo = itemRepo; diff --git a/MediaBrowser.Controller/Persistence/IRepository.cs b/MediaBrowser.Controller/Persistence/IRepository.cs index f6367c3846..2340ca6465 100644 --- a/MediaBrowser.Controller/Persistence/IRepository.cs +++ b/MediaBrowser.Controller/Persistence/IRepository.cs @@ -1,5 +1,4 @@ using System; -using System.Threading.Tasks; namespace MediaBrowser.Controller.Persistence { diff --git a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs index 2b856d1108..44bc461f39 100644 --- a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs @@ -38,22 +38,15 @@ namespace MediaBrowser.Providers.MediaInfo /// private readonly IMediaEncoder _mediaEncoder; - /// - /// The _library manager - /// - private readonly ILibraryManager _libraryManager; - /// /// Initializes a new instance of the class. /// /// The log manager. /// The configuration manager. - /// The library manager. /// The media encoder. - public AudioImageProvider(ILogManager logManager, IServerConfigurationManager configurationManager, ILibraryManager libraryManager, IMediaEncoder mediaEncoder) + public AudioImageProvider(ILogManager logManager, IServerConfigurationManager configurationManager, IMediaEncoder mediaEncoder) : base(logManager, configurationManager) { - _libraryManager = libraryManager; _mediaEncoder = mediaEncoder; ImageCache = new FileSystemRepository(Kernel.Instance.FFMpegManager.AudioImagesDataPath); diff --git a/MediaBrowser.Providers/Movies/MovieDbImagesProvider.cs b/MediaBrowser.Providers/Movies/MovieDbImagesProvider.cs index 512cef09c0..c048715c3e 100644 --- a/MediaBrowser.Providers/Movies/MovieDbImagesProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieDbImagesProvider.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Common.Extensions; -using MediaBrowser.Common.Net; +using MediaBrowser.Common.Net; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; @@ -11,7 +10,6 @@ using MediaBrowser.Model.Serialization; using System; using System.Collections.Generic; using System.Globalization; -using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -38,11 +36,6 @@ namespace MediaBrowser.Providers.Movies /// private readonly IJsonSerializer _jsonSerializer; - /// - /// The _HTTP client - /// - private readonly IHttpClient _httpClient; - /// /// Initializes a new instance of the class. /// @@ -50,13 +43,11 @@ namespace MediaBrowser.Providers.Movies /// The configuration manager. /// The provider manager. /// The json serializer. - /// The HTTP client. - public MovieDbImagesProvider(ILogManager logManager, IServerConfigurationManager configurationManager, IProviderManager providerManager, IJsonSerializer jsonSerializer, IHttpClient httpClient) + public MovieDbImagesProvider(ILogManager logManager, IServerConfigurationManager configurationManager, IProviderManager providerManager, IJsonSerializer jsonSerializer) : base(logManager, configurationManager) { _providerManager = providerManager; _jsonSerializer = jsonSerializer; - _httpClient = httpClient; } /// diff --git a/MediaBrowser.Providers/Music/LastfmAlbumProvider.cs b/MediaBrowser.Providers/Music/LastfmAlbumProvider.cs index e32bf23605..50a5ac8ed2 100644 --- a/MediaBrowser.Providers/Music/LastfmAlbumProvider.cs +++ b/MediaBrowser.Providers/Music/LastfmAlbumProvider.cs @@ -69,7 +69,9 @@ namespace MediaBrowser.Providers.Music protected override async Task FetchLastfmData(BaseItem item, string id, CancellationToken cancellationToken) { - var result = await GetAlbumResult(item, cancellationToken).ConfigureAwait(false); + var album = (MusicAlbum)item; + + var result = await GetAlbumResult(album, cancellationToken).ConfigureAwait(false); if (result != null && result.album != null) { @@ -83,15 +85,35 @@ namespace MediaBrowser.Providers.Music item.ProviderData[Id] = data; } - data.FileStamp = GetComparisonData(item as MusicAlbum); + data.FileStamp = GetComparisonData(album); } - private async Task GetAlbumResult(BaseItem item, CancellationToken cancellationToken) + private async Task GetAlbumResult(MusicAlbum item, CancellationToken cancellationToken) { - var folder = (Folder)item; + // Try album release Id + if (!string.IsNullOrEmpty(item.GetProviderId(MetadataProviders.Musicbrainz))) + { + var result = await GetAlbumResult(item.GetProviderId(MetadataProviders.Musicbrainz), cancellationToken).ConfigureAwait(false); + if (result != null && result.album != null) + { + return result; + } + } + + // Try album release group Id + if (!string.IsNullOrEmpty(item.GetProviderId(MetadataProviders.MusicBrainzReleaseGroup))) + { + var result = await GetAlbumResult(item.GetProviderId(MetadataProviders.MusicBrainzReleaseGroup), cancellationToken).ConfigureAwait(false); + + if (result != null && result.album != null) + { + return result; + } + } + // Get each song, distinct by the combination of AlbumArtist and Album - var songs = folder.RecursiveChildren.OfType /// The id. /// The user id. - /// The user manager. - /// The library manager. /// BaseItem. - private static BaseItem GetIndexFolder(string id, Guid userId, IUserManager userManager, ILibraryManager libraryManager) + private BaseItem GetIndexFolder(string id, Guid userId) { - var user = userManager.GetUserById(userId); + var user = _userManager.GetUserById(userId); var stringSeparators = new[] { IndexFolderDelimeter }; @@ -1028,7 +636,7 @@ namespace MediaBrowser.Controller.Dto var values = id.Split(stringSeparators, StringSplitOptions.None).ToList(); // Get the top folder normally using the first id - var folder = GetItemByClientId(values[0], userManager, libraryManager, userId) as Folder; + var folder = GetItemByDtoId(values[0], userId) as Folder; values.RemoveAt(0); @@ -1043,7 +651,7 @@ namespace MediaBrowser.Controller.Dto /// The parent folder. /// The user. /// BaseItem. - private static BaseItem GetIndexFolder(List values, Folder parentFolder, User user) + private BaseItem GetIndexFolder(List values, Folder parentFolder, User user) { // The index name is first var indexBy = values[0]; @@ -1067,44 +675,501 @@ namespace MediaBrowser.Controller.Dto } /// - /// Gets the backdrop image tags. + /// Sets simple property values on a DTOBaseItem /// + /// The dto. /// The item. - /// List{System.String}. - private List GetBackdropImageTags(BaseItem item) + /// The owner. + /// The fields. + private void AttachBasicFields(BaseItemDto dto, BaseItem item, BaseItem owner, List fields) { - return item.BackdropImagePaths - .Select(p => GetImageCacheTag(item, ImageType.Backdrop, p)) - .Where(i => i.HasValue) - .Select(i => i.Value) - .ToList(); + if (fields.Contains(ItemFields.DateCreated)) + { + dto.DateCreated = item.DateCreated; + } + + if (fields.Contains(ItemFields.OriginalRunTimeTicks)) + { + dto.OriginalRunTimeTicks = item.OriginalRunTimeTicks; + } + + dto.DisplayMediaType = item.DisplayMediaType; + + if (fields.Contains(ItemFields.MetadataSettings)) + { + dto.LockedFields = item.LockedFields; + dto.EnableInternetProviders = !item.DontFetchMeta; + } + + if (fields.Contains(ItemFields.Budget)) + { + dto.Budget = item.Budget; + } + + if (fields.Contains(ItemFields.Revenue)) + { + dto.Revenue = item.Revenue; + } + + dto.EndDate = item.EndDate; + + if (fields.Contains(ItemFields.HomePageUrl)) + { + dto.HomePageUrl = item.HomePageUrl; + } + + if (fields.Contains(ItemFields.Tags)) + { + dto.Tags = item.Tags; + } + + if (fields.Contains(ItemFields.ProductionLocations)) + { + dto.ProductionLocations = item.ProductionLocations; + } + + dto.AspectRatio = item.AspectRatio; + + dto.BackdropImageTags = GetBackdropImageTags(item); + dto.ScreenshotImageTags = GetScreenshotImageTags(item); + + if (fields.Contains(ItemFields.Genres)) + { + dto.Genres = item.Genres; + } + + dto.ImageTags = new Dictionary(); + + foreach (var image in item.Images) + { + var type = image.Key; + + var tag = GetImageCacheTag(item, type, image.Value); + + if (tag.HasValue) + { + dto.ImageTags[type] = tag.Value; + } + } + + dto.Id = GetDtoId(item); + dto.IndexNumber = item.IndexNumber; + dto.IsFolder = item.IsFolder; + dto.Language = item.Language; + dto.MediaType = item.MediaType; + dto.LocationType = item.LocationType; + dto.CriticRating = item.CriticRating; + + if (fields.Contains(ItemFields.CriticRatingSummary)) + { + dto.CriticRatingSummary = item.CriticRatingSummary; + } + + var localTrailerCount = item.LocalTrailerIds.Count; + + if (localTrailerCount > 0) + { + dto.LocalTrailerCount = localTrailerCount; + } + + dto.Name = item.Name; + dto.OfficialRating = item.OfficialRating; + + var hasOverview = fields.Contains(ItemFields.Overview); + var hasHtmlOverview = fields.Contains(ItemFields.OverviewHtml); + + if (hasOverview || hasHtmlOverview) + { + var strippedOverview = string.IsNullOrEmpty(item.Overview) ? item.Overview : item.Overview.StripHtml(); + + if (hasOverview) + { + dto.Overview = strippedOverview; + } + + // Only supply the html version if there was actually html content + if (hasHtmlOverview) + { + dto.OverviewHtml = item.Overview; + } + } + + // If there are no backdrops, indicate what parent has them in case the Ui wants to allow inheritance + if (dto.BackdropImageTags.Count == 0) + { + var parentWithBackdrop = GetParentBackdropItem(item, owner); + + if (parentWithBackdrop != null) + { + dto.ParentBackdropItemId = GetDtoId(parentWithBackdrop); + dto.ParentBackdropImageTags = GetBackdropImageTags(parentWithBackdrop); + } + } + + if (item.Parent != null && fields.Contains(ItemFields.ParentId)) + { + dto.ParentId = GetDtoId(item.Parent); + } + + dto.ParentIndexNumber = item.ParentIndexNumber; + + // If there is no logo, indicate what parent has one in case the Ui wants to allow inheritance + if (!dto.HasLogo) + { + var parentWithLogo = GetParentImageItem(item, ImageType.Logo, owner); + + if (parentWithLogo != null) + { + dto.ParentLogoItemId = GetDtoId(parentWithLogo); + + dto.ParentLogoImageTag = GetImageCacheTag(parentWithLogo, ImageType.Logo, parentWithLogo.GetImage(ImageType.Logo)); + } + } + + // If there is no art, indicate what parent has one in case the Ui wants to allow inheritance + if (!dto.HasArtImage) + { + var parentWithImage = GetParentImageItem(item, ImageType.Art, owner); + + if (parentWithImage != null) + { + dto.ParentArtItemId = GetDtoId(parentWithImage); + + dto.ParentArtImageTag = GetImageCacheTag(parentWithImage, ImageType.Art, parentWithImage.GetImage(ImageType.Art)); + } + } + + if (fields.Contains(ItemFields.Path)) + { + dto.Path = item.Path; + } + + dto.PremiereDate = item.PremiereDate; + dto.ProductionYear = item.ProductionYear; + + if (fields.Contains(ItemFields.ProviderIds)) + { + dto.ProviderIds = item.ProviderIds; + } + + dto.RunTimeTicks = item.RunTimeTicks; + + if (fields.Contains(ItemFields.SortName)) + { + dto.SortName = item.SortName; + } + + if (fields.Contains(ItemFields.CustomRating)) + { + dto.CustomRating = item.CustomRating; + } + + if (fields.Contains(ItemFields.Taglines)) + { + dto.Taglines = item.Taglines; + } + + if (fields.Contains(ItemFields.RemoteTrailers)) + { + dto.RemoteTrailers = item.RemoteTrailers; + } + + dto.Type = item.GetType().Name; + dto.CommunityRating = item.CommunityRating; + + if (item.IsFolder) + { + var folder = (Folder)item; + + if (fields.Contains(ItemFields.IndexOptions)) + { + dto.IndexOptions = folder.IndexByOptionStrings.ToArray(); + } + } + + // Add audio info + var audio = item as Audio; + if (audio != null) + { + dto.Album = audio.Album; + dto.AlbumArtist = audio.AlbumArtist; + dto.Artists = new[] { audio.Artist }; + + var albumParent = audio.FindParent(); + + if (albumParent != null) + { + dto.AlbumId = GetDtoId(albumParent); + + var imagePath = albumParent.PrimaryImagePath; + + if (!string.IsNullOrEmpty(imagePath)) + { + dto.AlbumPrimaryImageTag = GetImageCacheTag(albumParent, ImageType.Primary, imagePath); + } + } + } + + var album = item as MusicAlbum; + + if (album != null) + { + var songs = album.RecursiveChildren.OfType private readonly IServerManager _serverManager; - /// - /// The _logger - /// - private readonly ILogger _logger; /// /// The _user manager @@ -49,20 +43,22 @@ namespace MediaBrowser.Server.Implementations.EntryPoints /// private readonly ITaskManager _taskManager; + private readonly IDtoService _dtoService; + /// /// Initializes a new instance of the class. /// /// The server manager. /// The logger. /// The user manager. - public WebSocketEvents(IServerManager serverManager, IServerApplicationHost appHost, ILogger logger, IUserManager userManager, IInstallationManager installationManager, ITaskManager taskManager) + public WebSocketEvents(IServerManager serverManager, IServerApplicationHost appHost, IUserManager userManager, IInstallationManager installationManager, ITaskManager taskManager, IDtoService dtoService) { _serverManager = serverManager; - _logger = logger; _userManager = userManager; _installationManager = installationManager; _appHost = appHost; _taskManager = taskManager; + _dtoService = dtoService; } public void Run() @@ -140,7 +136,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints /// The e. async void userManager_UserUpdated(object sender, GenericEventArgs e) { - var dto = await new UserDtoBuilder(_logger).GetUserDto(e.Argument).ConfigureAwait(false); + var dto = await _dtoService.GetUserDto(e.Argument).ConfigureAwait(false); _serverManager.SendWebSocketMessage("UserUpdated", dto); } diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 7f3bb674e5..bdb4f28e43 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -250,14 +250,6 @@ namespace MediaBrowser.Server.Implementations.Library } } - /// - /// The _internet providers enabled - /// - private bool _internetProvidersEnabled; - /// - /// The _people image fetching enabled - /// - private bool _peopleImageFetchingEnabled; /// /// The _items by name path /// @@ -275,8 +267,6 @@ namespace MediaBrowser.Server.Implementations.Library { _seasonZeroDisplayName = ConfigurationManager.Configuration.SeasonZeroDisplayName; _itemsByNamePath = ConfigurationManager.ApplicationPaths.ItemsByNamePath; - _internetProvidersEnabled = configuration.EnableInternetProviders; - _peopleImageFetchingEnabled = configuration.InternetProviderExcludeTypes == null || !configuration.InternetProviderExcludeTypes.Contains(typeof(Person).Name, StringComparer.OrdinalIgnoreCase); } /// diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index a3647aefa7..73682dfcac 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -112,6 +112,7 @@ + diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteUserRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteUserRepository.cs index a29dc1a631..c96ed970a4 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteUserRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteUserRepository.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Serialization; @@ -40,32 +39,21 @@ namespace MediaBrowser.Server.Implementations.Persistence /// The json serializer. private readonly IJsonSerializer _jsonSerializer; - /// - /// The _app paths - /// - private readonly IApplicationPaths _appPaths; - /// /// Initializes a new instance of the class. /// /// The connection. - /// The app paths. /// The json serializer. /// The log manager. /// appPaths - public SqliteUserRepository(IDbConnection connection, IApplicationPaths appPaths, IJsonSerializer jsonSerializer, ILogManager logManager) + public SqliteUserRepository(IDbConnection connection, IJsonSerializer jsonSerializer, ILogManager logManager) { - if (appPaths == null) - { - throw new ArgumentNullException("appPaths"); - } if (jsonSerializer == null) { throw new ArgumentNullException("jsonSerializer"); } _connection = connection; - _appPaths = appPaths; _jsonSerializer = jsonSerializer; _logger = logManager.GetLogger(GetType().Name); diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs index 1cc19b02f0..c579996d2b 100644 --- a/MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs +++ b/MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs @@ -5,7 +5,6 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; -using MediaBrowser.Model.Serialization; using MoreLinq; using System; using System.Collections.Generic; @@ -21,8 +20,6 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks /// class ChapterImagesTask : IScheduledTask { - private readonly IJsonSerializer _jsonSerializer; - /// /// The _kernel /// @@ -54,14 +51,12 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks /// The kernel. /// The log manager. /// The library manager. - /// The json serializer. /// The item repo. - public ChapterImagesTask(Kernel kernel, ILogManager logManager, ILibraryManager libraryManager, IJsonSerializer jsonSerializer, IItemRepository itemRepo) + public ChapterImagesTask(Kernel kernel, ILogManager logManager, ILibraryManager libraryManager, IItemRepository itemRepo) { _kernel = kernel; _logger = logManager.GetLogger(GetType().Name); _libraryManager = libraryManager; - _jsonSerializer = jsonSerializer; _itemRepo = itemRepo; libraryManager.ItemAdded += libraryManager_ItemAdded; diff --git a/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs b/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs index 893a6e49e8..2a4361e616 100644 --- a/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs +++ b/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs @@ -1,13 +1,11 @@ -using System.Globalization; -using MediaBrowser.Common.Net; +using MediaBrowser.Common.Net; using MediaBrowser.Controller.Dto; -using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Session; using MediaBrowser.Model.Logging; +using MediaBrowser.Model.Net; using System; using System.Linq; using System.Threading.Tasks; -using MediaBrowser.Model.Net; namespace MediaBrowser.Server.Implementations.Session { @@ -31,22 +29,22 @@ namespace MediaBrowser.Server.Implementations.Session /// private readonly ILogger _logger; - private readonly IUserManager _userManager; - private readonly ILibraryManager _libraryManager; + /// + /// The _dto service + /// + private readonly IDtoService _dtoService; /// /// Initializes a new instance of the class. /// /// The session manager. /// The log manager. - /// The library manager. - /// The user manager. - public SessionWebSocketListener(ISessionManager sessionManager, ILogManager logManager, ILibraryManager libraryManager, IUserManager userManager) + /// The dto service. + public SessionWebSocketListener(ISessionManager sessionManager, ILogManager logManager, IDtoService dtoService) { _sessionManager = sessionManager; _logger = logManager.GetLogger(GetType().Name); - _libraryManager = libraryManager; - _userManager = userManager; + _dtoService = dtoService; } /// @@ -109,7 +107,7 @@ namespace MediaBrowser.Server.Implementations.Session if (session != null && session.User != null) { - var item = DtoBuilder.GetItemByClientId(message.Data, _userManager, _libraryManager); + var item = _dtoService.GetItemByDtoId(message.Data); _sessionManager.OnPlaybackStart(item, session.Id); } @@ -122,7 +120,7 @@ namespace MediaBrowser.Server.Implementations.Session { var vals = message.Data.Split('|'); - var item = DtoBuilder.GetItemByClientId(vals[0], _userManager, _libraryManager); + var item = _dtoService.GetItemByDtoId(vals[0]); long? positionTicks = null; @@ -152,7 +150,7 @@ namespace MediaBrowser.Server.Implementations.Session { var vals = message.Data.Split('|'); - var item = DtoBuilder.GetItemByClientId(vals[0], _userManager, _libraryManager); + var item = _dtoService.GetItemByDtoId(vals[0]); long? positionTicks = null; diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs index b77c738c37..c92eec2303 100644 --- a/MediaBrowser.ServerApplication/ApplicationHost.cs +++ b/MediaBrowser.ServerApplication/ApplicationHost.cs @@ -12,6 +12,7 @@ using MediaBrowser.Common.Net; using MediaBrowser.Controller; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Drawing; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.IO; using MediaBrowser.Controller.Library; @@ -32,6 +33,7 @@ using MediaBrowser.Providers; using MediaBrowser.Server.Implementations; using MediaBrowser.Server.Implementations.BdInfo; using MediaBrowser.Server.Implementations.Configuration; +using MediaBrowser.Server.Implementations.Dto; using MediaBrowser.Server.Implementations.HttpServer; using MediaBrowser.Server.Implementations.IO; using MediaBrowser.Server.Implementations.Library; @@ -155,6 +157,7 @@ namespace MediaBrowser.ServerApplication /// /// The HTTP server. private IHttpServer HttpServer { get; set; } + private IDtoService DtoService { get; set; } /// /// Gets or sets the media encoder. @@ -290,6 +293,9 @@ namespace MediaBrowser.ServerApplication LocalizationManager = new LocalizationManager(ServerConfigurationManager); RegisterSingleInstance(LocalizationManager); + DtoService = new DtoService(Logger, LibraryManager, UserManager, UserDataRepository, ItemRepository); + RegisterSingleInstance(DtoService); + var displayPreferencesTask = Task.Run(async () => await ConfigureDisplayPreferencesRepositories().ConfigureAwait(false)); var itemsTask = Task.Run(async () => await ConfigureItemRepositories().ConfigureAwait(false)); var userdataTask = Task.Run(async () => await ConfigureUserDataRepositories().ConfigureAwait(false)); @@ -309,7 +315,7 @@ namespace MediaBrowser.ServerApplication ServerKernel.ImageManager = new ImageManager(LogManager.GetLogger("ImageManager"), ApplicationPaths, ItemRepository); Parallel.Invoke( - () => ServerKernel.FFMpegManager = new FFMpegManager(ApplicationPaths, MediaEncoder, LibraryManager, Logger, ItemRepository), + () => ServerKernel.FFMpegManager = new FFMpegManager(ApplicationPaths, MediaEncoder, Logger, ItemRepository), () => ServerKernel.ImageManager.ImageEnhancers = GetExports().OrderBy(e => e.Priority).ToArray(), () => LocalizedStrings.StringFiles = GetExports(), SetStaticProperties @@ -322,7 +328,7 @@ namespace MediaBrowser.ServerApplication var connection = await ConnectToDb(dbFile).ConfigureAwait(false); - var repo = new SqliteUserRepository(connection, ApplicationPaths, JsonSerializer, LogManager); + var repo = new SqliteUserRepository(connection, JsonSerializer, LogManager); repo.Initialize(); diff --git a/MediaBrowser.WebDashboard/Api/DashboardInfoWebSocketListener.cs b/MediaBrowser.WebDashboard/Api/DashboardInfoWebSocketListener.cs index 4b19ceaf26..af0f9e3a05 100644 --- a/MediaBrowser.WebDashboard/Api/DashboardInfoWebSocketListener.cs +++ b/MediaBrowser.WebDashboard/Api/DashboardInfoWebSocketListener.cs @@ -1,7 +1,7 @@ using MediaBrowser.Common.Net; using MediaBrowser.Common.ScheduledTasks; using MediaBrowser.Controller; -using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Session; using MediaBrowser.Model.Logging; using System.Threading.Tasks; @@ -31,6 +31,7 @@ namespace MediaBrowser.WebDashboard.Api private readonly ITaskManager _taskManager; private readonly ISessionManager _sessionManager; + private readonly IDtoService _dtoService; /// /// Initializes a new instance of the class. @@ -39,12 +40,13 @@ namespace MediaBrowser.WebDashboard.Api /// The logger. /// The task manager. /// The session manager. - public DashboardInfoWebSocketListener(IServerApplicationHost appHost, ILogger logger, ITaskManager taskManager, ISessionManager sessionManager) + public DashboardInfoWebSocketListener(IServerApplicationHost appHost, ILogger logger, ITaskManager taskManager, ISessionManager sessionManager, IDtoService dtoService) : base(logger) { _appHost = appHost; _taskManager = taskManager; _sessionManager = sessionManager; + _dtoService = dtoService; } /// @@ -54,7 +56,7 @@ namespace MediaBrowser.WebDashboard.Api /// Task{IEnumerable{TaskInfo}}. protected override Task GetDataToSend(object state) { - return Task.FromResult(DashboardService.GetDashboardInfo(_appHost, _taskManager, _sessionManager)); + return Task.FromResult(DashboardService.GetDashboardInfo(_appHost, _taskManager, _sessionManager, _dtoService)); } } } diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs index ceed8d6c7c..df66d972ea 100644 --- a/MediaBrowser.WebDashboard/Api/DashboardService.cs +++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs @@ -117,6 +117,7 @@ namespace MediaBrowser.WebDashboard.Api private readonly IServerConfigurationManager _serverConfigurationManager; private readonly ISessionManager _sessionManager; + private readonly IDtoService _dtoService; /// /// Initializes a new instance of the class. @@ -125,12 +126,13 @@ namespace MediaBrowser.WebDashboard.Api /// The app host. /// The server configuration manager. /// The session manager. - public DashboardService(ITaskManager taskManager, IServerApplicationHost appHost, IServerConfigurationManager serverConfigurationManager, ISessionManager sessionManager) + public DashboardService(ITaskManager taskManager, IServerApplicationHost appHost, IServerConfigurationManager serverConfigurationManager, ISessionManager sessionManager, IDtoService dtoService) { _taskManager = taskManager; _appHost = appHost; _serverConfigurationManager = serverConfigurationManager; _sessionManager = sessionManager; + _dtoService = dtoService; } /// @@ -169,7 +171,7 @@ namespace MediaBrowser.WebDashboard.Api /// System.Object. public object Get(GetDashboardInfo request) { - var result = GetDashboardInfo(_appHost, _taskManager, _sessionManager); + var result = GetDashboardInfo(_appHost, _taskManager, _sessionManager, _dtoService); return ResultFactory.GetOptimizedResult(RequestContext, result); } @@ -183,7 +185,7 @@ namespace MediaBrowser.WebDashboard.Api /// DashboardInfo. public static DashboardInfo GetDashboardInfo(IServerApplicationHost appHost, ITaskManager taskManager, - ISessionManager connectionManager) + ISessionManager connectionManager, IDtoService dtoService) { var connections = connectionManager.Sessions.Where(i => i.IsActive).ToArray(); @@ -197,7 +199,7 @@ namespace MediaBrowser.WebDashboard.Api ApplicationUpdateTaskId = taskManager.ScheduledTasks.First(t => t.ScheduledTask.GetType().Name.Equals("SystemUpdateTask", StringComparison.OrdinalIgnoreCase)).Id, - ActiveConnections = connections.Select(SessionInfoDtoBuilder.GetSessionInfoDto).ToArray() + ActiveConnections = connections.Select(dtoService.GetSessionInfoDto).ToArray() }; }