diff options
| author | Luke <luke.pulverenti@gmail.com> | 2017-04-16 21:46:07 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-04-16 21:46:07 -0400 |
| commit | 315541a686858eeab84f73a4fcad1a11c1ee15c7 (patch) | |
| tree | 7991c246ccb90c97d0b25297933bf1b37801c8ef /MediaBrowser.Api/SuggestionsService.cs | |
| parent | 8c4e69e1c66c01a95de59ac47f5d3607c8b61525 (diff) | |
| parent | eddcc466022c063265dc6fa8e729bbdf6c18a467 (diff) | |
Merge pull request #2582 from MediaBrowser/dev
Dev
Diffstat (limited to 'MediaBrowser.Api/SuggestionsService.cs')
| -rw-r--r-- | MediaBrowser.Api/SuggestionsService.cs | 53 |
1 files changed, 38 insertions, 15 deletions
diff --git a/MediaBrowser.Api/SuggestionsService.cs b/MediaBrowser.Api/SuggestionsService.cs index 7196c0f39..3e901e303 100644 --- a/MediaBrowser.Api/SuggestionsService.cs +++ b/MediaBrowser.Api/SuggestionsService.cs @@ -12,6 +12,7 @@ using MediaBrowser.Controller.Library; namespace MediaBrowser.Api { [Route("/Users/{UserId}/Suggestions", "GET", Summary = "Gets items based on a query.")] + [Route("/Users/{UserId}/Suggestions", "POST", Summary = "Gets items based on a query.")] public class GetSuggestedItems : IReturn<QueryResult<BaseItem>> { public string MediaType { get; set; } @@ -20,6 +21,7 @@ namespace MediaBrowser.Api public bool EnableTotalRecordCount { get; set; } public int? StartIndex { get; set; } public int? Limit { get; set; } + public string Name { get; set; } public string[] GetMediaTypes() { @@ -54,6 +56,13 @@ namespace MediaBrowser.Api return ToOptimizedResult(result); } + public async Task<object> Post(GetSuggestedItems request) + { + var result = await GetResultItems(request).ConfigureAwait(false); + + return ToOptimizedResult(result); + } + private async Task<QueryResult<BaseItemDto>> GetResultItems(GetSuggestedItems request) { var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null; @@ -77,7 +86,30 @@ namespace MediaBrowser.Api private QueryResult<BaseItem> GetItems(GetSuggestedItems request, User user, DtoOptions dtoOptions) { - var query = new InternalItemsQuery(user) + BaseItem similarToItem = null; + + if (!string.IsNullOrWhiteSpace(request.Name)) + { + // get item by name, then get similar items from that + similarToItem = _libraryManager.GetItemList(new InternalItemsQuery(user) + { + SortBy = new string[] {ItemSortBy.Random}, + MediaTypes = request.GetMediaTypes(), + IncludeItemTypes = request.GetIncludeItemTypes(), + IsVirtualItem = false, + Name = request.Name, + Recursive = true, + Limit = 1 + + }).FirstOrDefault(); + + if (similarToItem == null) + { + return new QueryResult<BaseItem>(); + } + } + + return _libraryManager.GetItemsResult(new InternalItemsQuery(user) { SortBy = new string[] { ItemSortBy.Random }, MediaTypes = request.GetMediaTypes(), @@ -85,20 +117,11 @@ namespace MediaBrowser.Api IsVirtualItem = false, StartIndex = request.StartIndex, Limit = request.Limit, - DtoOptions = dtoOptions - }; - - if (request.EnableTotalRecordCount) - { - return _libraryManager.GetItemsResult(query); - } - - var items = _libraryManager.GetItemList(query).ToArray(); - - return new QueryResult<BaseItem> - { - Items = items - }; + DtoOptions = dtoOptions, + EnableTotalRecordCount = request.EnableTotalRecordCount, + Recursive = true, + SimilarTo = similarToItem + }); } } } |
