aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/UserLibrary/ItemsService.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2017-10-01 13:26:09 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2017-10-01 13:26:09 -0400
commit085470394e60fa919581b2f19dc234eeb985993a (patch)
tree45be02aed7e689730b128a97b1ae9c3324cd3a60 /MediaBrowser.Api/UserLibrary/ItemsService.cs
parent11228356888409abc80d1a45dcacf737dcf17313 (diff)
update home screen sections
Diffstat (limited to 'MediaBrowser.Api/UserLibrary/ItemsService.cs')
-rw-r--r--MediaBrowser.Api/UserLibrary/ItemsService.cs52
1 files changed, 52 insertions, 0 deletions
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs
index 5919c50d4..5fe386f1a 100644
--- a/MediaBrowser.Api/UserLibrary/ItemsService.cs
+++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs
@@ -26,6 +26,11 @@ namespace MediaBrowser.Api.UserLibrary
{
}
+ [Route("/Users/{UserId}/Items/Resume", "GET", Summary = "Gets items based on a query.")]
+ public class GetResumeItems : BaseItemsRequest, IReturn<QueryResult<BaseItemDto>>
+ {
+ }
+
/// <summary>
/// Class ItemsService
/// </summary>
@@ -79,6 +84,53 @@ namespace MediaBrowser.Api.UserLibrary
_authContext = authContext;
}
+ public object Get(GetResumeItems request)
+ {
+ var user = _userManager.GetUserById(request.UserId);
+
+ var parentIdGuid = string.IsNullOrWhiteSpace(request.ParentId) ? (Guid?)null : new Guid(request.ParentId);
+
+ var options = GetDtoOptions(_authContext, request);
+
+ var ancestorIds = new List<string>();
+
+ var excludeFolderIds = user.Configuration.LatestItemsExcludes;
+ if (!parentIdGuid.HasValue && excludeFolderIds.Length > 0)
+ {
+ ancestorIds = user.RootFolder.GetChildren(user, true)
+ .Where(i => i is Folder)
+ .Where(i => !excludeFolderIds.Contains(i.Id.ToString("N")))
+ .Select(i => i.Id.ToString("N"))
+ .ToList();
+ }
+
+ var itemsResult = _libraryManager.GetItemsResult(new InternalItemsQuery(user)
+ {
+ OrderBy = new[] { ItemSortBy.DatePlayed }.Select(i => new Tuple<string, SortOrder>(i, SortOrder.Descending)).ToArray(),
+ IsResumable = true,
+ StartIndex = request.StartIndex,
+ Limit = request.Limit,
+ ParentId = parentIdGuid,
+ Recursive = true,
+ DtoOptions = options,
+ MediaTypes = request.GetMediaTypes(),
+ IsVirtualItem = false,
+ CollapseBoxSetItems = false,
+ EnableTotalRecordCount = request.EnableTotalRecordCount,
+ AncestorIds = ancestorIds.ToArray()
+ });
+
+ var returnItems = _dtoService.GetBaseItemDtos(itemsResult.Items, options, user);
+
+ var result = new QueryResult<BaseItemDto>
+ {
+ TotalRecordCount = itemsResult.TotalRecordCount,
+ Items = returnItems
+ };
+
+ return ToOptimizedSerializedResultUsingCache(result);
+ }
+
/// <summary>
/// Gets the specified request.
/// </summary>