diff options
Diffstat (limited to 'MediaBrowser.Api/GamesService.cs')
| -rw-r--r-- | MediaBrowser.Api/GamesService.cs | 73 |
1 files changed, 16 insertions, 57 deletions
diff --git a/MediaBrowser.Api/GamesService.cs b/MediaBrowser.Api/GamesService.cs index 2d161ccfd..6c48b732f 100644 --- a/MediaBrowser.Api/GamesService.cs +++ b/MediaBrowser.Api/GamesService.cs @@ -12,6 +12,7 @@ using System.Linq; using System.Threading.Tasks; using MediaBrowser.Model.Querying; using MediaBrowser.Model.Services; +using MediaBrowser.Model.Extensions; namespace MediaBrowser.Api { @@ -27,21 +28,7 @@ namespace MediaBrowser.Api /// Class GetGameSystemSummaries /// </summary> [Route("/Games/SystemSummaries", "GET", Summary = "Finds games similar to a given game.")] - public class GetGameSystemSummaries : IReturn<List<GameSystemSummary>> - { - /// <summary> - /// Gets or sets the user id. - /// </summary> - /// <value>The user id.</value> - [ApiMember(Name = "UserId", Description = "Optional. Filter by user id", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public string UserId { get; set; } - } - - /// <summary> - /// Class GetGameSystemSummaries - /// </summary> - [Route("/Games/PlayerIndex", "GET", Summary = "Gets an index of players (1-x) and the number of games listed under each")] - public class GetPlayerIndex : IReturn<List<ItemIndex>> + public class GetGameSystemSummaries : IReturn<GameSystemSummary[]> { /// <summary> /// Gets or sets the user id. @@ -116,47 +103,17 @@ namespace MediaBrowser.Api EnableImages = false } }; - var gameSystems = _libraryManager.GetItemList(query) - .Cast<GameSystem>() - .ToList(); - var result = gameSystems + var result = _libraryManager.GetItemList(query) + .Cast<GameSystem>() .Select(i => GetSummary(i, user)) - .ToList(); + .ToArray(); return ToOptimizedSerializedResultUsingCache(result); } private static readonly CultureInfo UsCulture = new CultureInfo("en-US"); - public object Get(GetPlayerIndex request) - { - var user = request.UserId == null ? null : _userManager.GetUserById(request.UserId); - var query = new InternalItemsQuery(user) - { - IncludeItemTypes = new[] { typeof(Game).Name }, - DtoOptions = new DtoOptions(false) - { - EnableImages = false - } - }; - var games = _libraryManager.GetItemList(query) - .Cast<Game>() - .ToList(); - - var lookup = games - .ToLookup(i => i.PlayersSupported ?? -1) - .OrderBy(i => i.Key) - .Select(i => new ItemIndex - { - ItemCount = i.Count(), - Name = i.Key == -1 ? string.Empty : i.Key.ToString(UsCulture) - }) - .ToList(); - - return ToOptimizedSerializedResultUsingCache(lookup); - } - /// <summary> /// Gets the summary. /// </summary> @@ -171,7 +128,7 @@ namespace MediaBrowser.Api DisplayName = system.Name }; - var items = user == null ? + var items = user == null ? system.GetRecursiveChildren(i => i is Game) : system.GetRecursiveChildren(user, new InternalItemsQuery(user) { @@ -182,15 +139,15 @@ namespace MediaBrowser.Api } }); - var games = items.Cast<Game>().ToList(); + var games = items.Cast<Game>().ToArray(); summary.ClientInstalledGameCount = games.Count(i => i.IsPlaceHolder); - summary.GameCount = games.Count; + summary.GameCount = games.Length; summary.GameFileExtensions = games.Where(i => !i.IsPlaceHolder).Select(i => Path.GetExtension(i.Path)) .Distinct(StringComparer.OrdinalIgnoreCase) - .ToList(); + .ToArray(); return summary; } @@ -200,14 +157,14 @@ namespace MediaBrowser.Api /// </summary> /// <param name="request">The request.</param> /// <returns>System.Object.</returns> - public async Task<object> Get(GetSimilarGames request) + public object Get(GetSimilarGames request) { - var result = await GetSimilarItemsResult(request).ConfigureAwait(false); + var result = GetSimilarItemsResult(request); return ToOptimizedSerializedResultUsingCache(result); } - private async Task<QueryResult<BaseItemDto>> GetSimilarItemsResult(BaseGetSimilarItemsFromItem request) + private QueryResult<BaseItemDto> GetSimilarItemsResult(BaseGetSimilarItemsFromItem request) { var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null; @@ -227,11 +184,13 @@ namespace MediaBrowser.Api SimilarTo = item, DtoOptions = dtoOptions - }).ToList(); + }); + + var returnList = _dtoService.GetBaseItemDtos(itemsResult, dtoOptions, user); var result = new QueryResult<BaseItemDto> { - Items = (await _dtoService.GetBaseItemDtos(itemsResult, dtoOptions, user).ConfigureAwait(false)).ToArray(), + Items = returnList, TotalRecordCount = itemsResult.Count }; |
