From dc15f930051d209e7bccbd352139a843982a9c62 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 26 Jun 2016 16:35:03 -0400 Subject: [PATCH] fixes #1787 --- MediaBrowser.Api/UserLibrary/ItemsService.cs | 38 ++++++++++++++++++- .../Dto/DtoService.cs | 10 +++++ 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index 7dd5920b7..19cadbec7 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -52,6 +52,23 @@ namespace MediaBrowser.Api.UserLibrary /// The dto service. public ItemsService(IUserManager userManager, ILibraryManager libraryManager, ILocalizationManager localization, IDtoService dtoService) { + if (userManager == null) + { + throw new ArgumentNullException("userManager"); + } + if (libraryManager == null) + { + throw new ArgumentNullException("libraryManager"); + } + if (localization == null) + { + throw new ArgumentNullException("localization"); + } + if (dtoService == null) + { + throw new ArgumentNullException("dtoService"); + } + _userManager = userManager; _libraryManager = libraryManager; _localization = localization; @@ -65,6 +82,11 @@ namespace MediaBrowser.Api.UserLibrary /// System.Object. public async Task Get(GetItems request) { + if (request == null) + { + throw new ArgumentNullException("request"); + } + var result = await GetItems(request).ConfigureAwait(false); return ToOptimizedSerializedResultUsingCache(result); @@ -78,15 +100,27 @@ namespace MediaBrowser.Api.UserLibrary private async Task GetItems(GetItems request) { var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null; - + var result = await GetItemsToSerialize(request, user).ConfigureAwait(false); + if (result == null) + { + throw new InvalidOperationException("GetItemsToSerialize returned null"); + } + var dtoOptions = GetDtoOptions(request); + var dtoList = await _dtoService.GetBaseItemDtos(result.Items, dtoOptions, user).ConfigureAwait(false); + + if (dtoList == null) + { + throw new InvalidOperationException("GetBaseItemDtos returned null"); + } + return new ItemsResult { TotalRecordCount = result.TotalRecordCount, - Items = (await _dtoService.GetBaseItemDtos(result.Items, dtoOptions, user).ConfigureAwait(false)).ToArray() + Items = dtoList.ToArray() }; } diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index f21dd27ff..8805d567a 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -88,6 +88,16 @@ namespace MediaBrowser.Server.Implementations.Dto public async Task> GetBaseItemDtos(IEnumerable items, DtoOptions options, User user = null, BaseItem owner = null) { + if (items == null) + { + throw new ArgumentNullException("items"); + } + + if (options == null) + { + throw new ArgumentNullException("options"); + } + var syncJobItems = GetSyncedItemProgress(options); var syncDictionary = GetSyncedItemProgressDictionary(syncJobItems);