diff options
Diffstat (limited to 'MediaBrowser.Api')
| -rw-r--r-- | MediaBrowser.Api/ChannelService.cs | 30 | ||||
| -rw-r--r-- | MediaBrowser.Api/Library/LibraryService.cs | 25 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/ItemsService.cs | 24 |
3 files changed, 73 insertions, 6 deletions
diff --git a/MediaBrowser.Api/ChannelService.cs b/MediaBrowser.Api/ChannelService.cs index aa8fc9e52..c1724571a 100644 --- a/MediaBrowser.Api/ChannelService.cs +++ b/MediaBrowser.Api/ChannelService.cs @@ -18,6 +18,21 @@ namespace MediaBrowser.Api public int? Limit { get; set; } } + [Route("/Channels/{Id}/Items", "GET")] + [Api(("Gets channel items"))] + public class GetChannelItems : IReturn<QueryResult<BaseItemDto>> + { + public string Id { get; set; } + + public string CategoryId { get; set; } + + public string UserId { get; set; } + + public int? StartIndex { get; set; } + + public int? Limit { get; set; } + } + public class ChannelService : BaseApiService { private readonly IChannelManager _channelManager; @@ -39,5 +54,20 @@ namespace MediaBrowser.Api return ToOptimizedResult(result); } + + public object Get(GetChannelItems request) + { + var result = _channelManager.GetChannelItems(new ChannelItemQuery + { + Limit = request.Limit, + StartIndex = request.StartIndex, + UserId = request.UserId, + ChannelId = request.Id, + CategoryId = request.CategoryId + + }, CancellationToken.None).Result; + + return ToOptimizedResult(result); + } } } diff --git a/MediaBrowser.Api/Library/LibraryService.cs b/MediaBrowser.Api/Library/LibraryService.cs index c3fdbb9a0..dba256418 100644 --- a/MediaBrowser.Api/Library/LibraryService.cs +++ b/MediaBrowser.Api/Library/LibraryService.cs @@ -1,4 +1,5 @@ using MediaBrowser.Common.Extensions; +using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; @@ -6,6 +7,7 @@ using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; +using MediaBrowser.Model.Channels; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Querying; @@ -242,18 +244,20 @@ namespace MediaBrowser.Api.Library private readonly IUserDataManager _userDataManager; private readonly IDtoService _dtoService; + private readonly IChannelManager _channelManager; /// <summary> /// Initializes a new instance of the <see cref="LibraryService" /> class. /// </summary> public LibraryService(IItemRepository itemRepo, ILibraryManager libraryManager, IUserManager userManager, - IDtoService dtoService, IUserDataManager userDataManager) + IDtoService dtoService, IUserDataManager userDataManager, IChannelManager channelManager) { _itemRepo = itemRepo; _libraryManager = libraryManager; _userManager = userManager; _dtoService = dtoService; _userDataManager = userDataManager; + _channelManager = channelManager; } public object Get(GetMediaFolders request) @@ -417,6 +421,21 @@ namespace MediaBrowser.Api.Library var songs = filteredItems.OfType<Audio>().ToList(); var series = filteredItems.OfType<Series>().ToList(); + var channelCount = 0; + + try + { + channelCount = _channelManager.GetChannels(new ChannelQuery + { + UserId = request.UserId.HasValue ? request.UserId.Value.ToString("N") : null + + }, CancellationToken.None).Result.TotalRecordCount; + } + catch (Exception ex) + { + Logger.ErrorException("Error getting channels", ex); + } + var counts = new ItemCounts { AlbumCount = albums.Count, @@ -432,7 +451,9 @@ namespace MediaBrowser.Api.Library BoxSetCount = boxsets.Count, BookCount = books.Count, - UniqueTypes = items.Select(i => i.GetClientTypeName()).Distinct().ToList() + UniqueTypes = items.Select(i => i.GetClientTypeName()).Distinct().ToList(), + + ChannelCount = channelCount }; return ToOptimizedSerializedResultUsingCache(counts); diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index 44c224989..f70a21eaf 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -113,7 +113,7 @@ namespace MediaBrowser.Api.UserLibrary [ApiMember(Name = "NameStartsWith", Description = "Optional filter by items whose name is sorted equally than a given input string.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] public string NameStartsWith { get; set; } - + [ApiMember(Name = "NameLessThan", Description = "Optional filter by items whose name is equally or lesser than a given input string.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] public string NameLessThan { get; set; } @@ -240,7 +240,7 @@ namespace MediaBrowser.Api.UserLibrary public bool? HasOfficialRating { get; set; } [ApiMember(Name = "CollapseBoxSetItems", Description = "Whether or not to hide items behind their boxsets.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] - public bool CollapseBoxSetItems { get; set; } + public bool? CollapseBoxSetItems { get; set; } } /// <summary> @@ -318,7 +318,7 @@ namespace MediaBrowser.Api.UserLibrary items = items.AsEnumerable(); - if (request.CollapseBoxSetItems && AllowBoxSetCollapsing(request)) + if (CollapseBoxSetItems(request)) { items = CollapseItemsWithinBoxSets(items, user); } @@ -346,6 +346,22 @@ namespace MediaBrowser.Api.UserLibrary }; } + private bool CollapseBoxSetItems(GetItems request) + { + var param = request.CollapseBoxSetItems; + + if (!param.HasValue) + { + if (!string.IsNullOrWhiteSpace(request.IncludeItemTypes) && + request.IncludeItemTypes.Split(',').Contains("Movie", StringComparer.OrdinalIgnoreCase)) + { + param = true; + } + } + + return param.HasValue && param.Value && AllowBoxSetCollapsing(request); + } + /// <summary> /// Gets the items to serialize. /// </summary> @@ -786,7 +802,7 @@ namespace MediaBrowser.Api.UserLibrary { items = items.Where(i => string.Compare(request.NameStartsWith, i.SortName.Substring(0, 1), StringComparison.CurrentCultureIgnoreCase) == 0); } - + if (!string.IsNullOrEmpty(request.NameLessThan)) { items = items.Where(i => string.Compare(request.NameLessThan, i.SortName, StringComparison.CurrentCultureIgnoreCase) == 1); |
