aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-04-22 00:38:03 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-04-22 00:38:03 -0400
commit374b7f2f039211d5a8fb80348b72070841f393ec (patch)
tree65ba8f81ed5a53e9ba0222f677710f2a918b6230 /MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
parent1a153cbd39894e2e70373f85590dc03326f31723 (diff)
new Artist entity
Diffstat (limited to 'MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs')
-rw-r--r--MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs66
1 files changed, 55 insertions, 11 deletions
diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
index 0a2d6453a..8f2264c6a 100644
--- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
+++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
@@ -50,9 +50,18 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>Task{ItemsResult}.</returns>
protected async Task<ItemsResult> GetResult(GetItemsByName request)
{
- var user = UserManager.GetUserById(request.UserId);
+ User user = null;
+ BaseItem item;
- var item = string.IsNullOrEmpty(request.ParentId) ? user.RootFolder : DtoBuilder.GetItemByClientId(request.ParentId, UserManager, LibraryManager, user.Id);
+ 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);
+ }
+ else
+ {
+ item = string.IsNullOrEmpty(request.ParentId) ? LibraryManager.RootFolder : DtoBuilder.GetItemByClientId(request.ParentId, UserManager, LibraryManager);
+ }
IEnumerable<BaseItem> items;
@@ -60,16 +69,23 @@ namespace MediaBrowser.Api.UserLibrary
{
var folder = (Folder)item;
- items = request.Recursive ? folder.GetRecursiveChildren(user) : folder.GetChildren(user);
+ if (request.UserId.HasValue)
+ {
+ items = request.Recursive ? folder.GetRecursiveChildren(user) : folder.GetChildren(user);
+ }
+ else
+ {
+ items = request.Recursive ? folder.RecursiveChildren: folder.Children;
+ }
}
else
{
items = new[] { item };
}
- items = FilterItems(request, items, user);
+ items = FilterItems(request, items);
- var extractedItems = GetAllItems(request, items, user);
+ var extractedItems = GetAllItems(request, items);
extractedItems = FilterItems(request, extractedItems, user);
extractedItems = SortItems(request, extractedItems);
@@ -187,9 +203,8 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <param name="request">The request.</param>
/// <param name="items">The items.</param>
- /// <param name="user">The user.</param>
/// <returns>IEnumerable{BaseItem}.</returns>
- private IEnumerable<BaseItem> FilterItems(GetItemsByName request, IEnumerable<BaseItem> items, User user)
+ private IEnumerable<BaseItem> FilterItems(GetItemsByName request, IEnumerable<BaseItem> items)
{
// Exclude item types
if (!string.IsNullOrEmpty(request.ExcludeItemTypes))
@@ -213,9 +228,8 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <param name="request">The request.</param>
/// <param name="items">The items.</param>
- /// <param name="user">The user.</param>
/// <returns>IEnumerable{Tuple{System.StringFunc{System.Int32}}}.</returns>
- protected abstract IEnumerable<IbnStub<TItemType>> GetAllItems(GetItemsByName request, IEnumerable<BaseItem> items, User user);
+ protected abstract IEnumerable<IbnStub<TItemType>> GetAllItems(GetItemsByName request, IEnumerable<BaseItem> items);
/// <summary>
/// Gets the dto.
@@ -238,18 +252,36 @@ namespace MediaBrowser.Api.UserLibrary
return null;
}
- var dto = await new DtoBuilder(Logger, LibraryManager, UserDataRepository).GetBaseItemDto(item, user, fields).ConfigureAwait(false);
+ var dto = user == null ? await new DtoBuilder(Logger, LibraryManager, UserDataRepository).GetBaseItemDto(item, fields).ConfigureAwait(false) :
+ await new DtoBuilder(Logger, LibraryManager, UserDataRepository).GetBaseItemDto(item, user, fields).ConfigureAwait(false);
if (fields.Contains(ItemFields.ItemCounts))
{
var items = stub.Items;
dto.ChildCount = items.Count;
- dto.RecentlyAddedItemCount = items.Count(i => i.IsRecentlyAdded(user));
+ dto.RecentlyAddedItemCount = items.Count(i => i.IsRecentlyAdded());
}
return dto;
}
+
+ /// <summary>
+ /// Gets the items.
+ /// </summary>
+ /// <param name="userId">The user id.</param>
+ /// <returns>IEnumerable{BaseItem}.</returns>
+ protected IEnumerable<BaseItem> GetItems(Guid? userId)
+ {
+ if (userId.HasValue)
+ {
+ var user = UserManager.GetUserById(userId.Value);
+
+ return UserManager.GetUserById(userId.Value).RootFolder.GetRecursiveChildren(user);
+ }
+
+ return LibraryManager.RootFolder.RecursiveChildren;
+ }
}
/// <summary>
@@ -258,11 +290,23 @@ namespace MediaBrowser.Api.UserLibrary
public class GetItemsByName : BaseItemsRequest, IReturn<ItemsResult>
{
/// <summary>
+ /// Gets or sets the user id.
+ /// </summary>
+ /// <value>The user id.</value>
+ [ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public Guid? UserId { get; set; }
+
+ /// <summary>
/// What to sort the results by
/// </summary>
/// <value>The sort by.</value>
[ApiMember(Name = "SortBy", Description = "Optional. Options: SortName", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string SortBy { get; set; }
+
+ public GetItemsByName()
+ {
+ Recursive = true;
+ }
}
public class IbnStub<T>