aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api')
-rw-r--r--MediaBrowser.Api/ChannelService.cs30
-rw-r--r--MediaBrowser.Api/Library/LibraryService.cs25
-rw-r--r--MediaBrowser.Api/UserLibrary/ItemsService.cs24
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);