aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/GamesService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/GamesService.cs')
-rw-r--r--MediaBrowser.Api/GamesService.cs73
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
};