diff options
| author | stefan <stefan@hegedues.at> | 2018-09-12 19:26:21 +0200 |
|---|---|---|
| committer | stefan <stefan@hegedues.at> | 2018-09-12 19:26:21 +0200 |
| commit | 48facb797ed912e4ea6b04b17d1ff190ac2daac4 (patch) | |
| tree | 8dae77a31670a888d733484cb17dd4077d5444e8 /MediaBrowser.Api/ChannelService.cs | |
| parent | c32d8656382a0eacb301692e0084377fc433ae9b (diff) | |
Update to 3.5.2 and .net core 2.1
Diffstat (limited to 'MediaBrowser.Api/ChannelService.cs')
| -rw-r--r-- | MediaBrowser.Api/ChannelService.cs | 145 |
1 files changed, 110 insertions, 35 deletions
diff --git a/MediaBrowser.Api/ChannelService.cs b/MediaBrowser.Api/ChannelService.cs index 2e8eb9e07..0b9d5efa9 100644 --- a/MediaBrowser.Api/ChannelService.cs +++ b/MediaBrowser.Api/ChannelService.cs @@ -11,6 +11,8 @@ using System.Threading; using System.Threading.Tasks; using MediaBrowser.Api.UserLibrary; using MediaBrowser.Model.Services; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; namespace MediaBrowser.Api { @@ -21,8 +23,8 @@ namespace MediaBrowser.Api /// Gets or sets the user id. /// </summary> /// <value>The user id.</value> - [ApiMember(Name = "UserId", Description = "User Id", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "GET")] - public string UserId { get; set; } + [ApiMember(Name = "UserId", Description = "User Id", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public Guid UserId { get; set; } /// <summary> /// Skips over a given number of items within the results. Use for paging. @@ -41,6 +43,8 @@ namespace MediaBrowser.Api [ApiMember(Name = "SupportsLatestItems", Description = "Optional. Filter by channels that support getting latest items.", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "GET")] public bool? SupportsLatestItems { get; set; } + public bool? SupportsMediaDeletion { get; set; } + /// <summary> /// Gets or sets a value indicating whether this instance is favorite. /// </summary> @@ -74,7 +78,7 @@ namespace MediaBrowser.Api /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "User Id", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public string UserId { get; set; } + public Guid UserId { get; set; } /// <summary> /// Skips over a given number of items within the results. Use for paging. @@ -122,7 +126,7 @@ namespace MediaBrowser.Api /// Gets the order by. /// </summary> /// <returns>IEnumerable{ItemSortBy}.</returns> - public Tuple<string, SortOrder>[] GetOrderBy() + public ValueTuple<string, SortOrder>[] GetOrderBy() { return BaseItemsRequest.GetOrderBy(SortBy, SortOrder); } @@ -136,7 +140,7 @@ namespace MediaBrowser.Api /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "User Id", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public string UserId { get; set; } + public Guid UserId { get; set; } /// <summary> /// Skips over a given number of items within the results. Use for paging. @@ -178,21 +182,16 @@ namespace MediaBrowser.Api } } - [Route("/Channels/Folder", "GET", Summary = "Gets the users channel folder, along with configured images")] - public class GetChannelFolder : IReturn<BaseItemDto> - { - [ApiMember(Name = "UserId", Description = "Optional attach user data.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public string UserId { get; set; } - } - [Authenticated] public class ChannelService : BaseApiService { private readonly IChannelManager _channelManager; + private IUserManager _userManager; - public ChannelService(IChannelManager channelManager) + public ChannelService(IChannelManager channelManager, IUserManager userManager) { _channelManager = channelManager; + _userManager = userManager; } public object Get(GetAllChannelFeatures request) @@ -209,56 +208,132 @@ namespace MediaBrowser.Api return ToOptimizedResult(result); } - public object Get(GetChannelFolder request) + public object Get(GetChannels request) { - return ToOptimizedResult(_channelManager.GetChannelFolder(request.UserId, CancellationToken.None)); - } - - public async Task<object> Get(GetChannels request) - { - var result = await _channelManager.GetChannels(new ChannelQuery + var result = _channelManager.GetChannels(new ChannelQuery { Limit = request.Limit, StartIndex = request.StartIndex, UserId = request.UserId, SupportsLatestItems = request.SupportsLatestItems, + SupportsMediaDeletion = request.SupportsMediaDeletion, IsFavorite = request.IsFavorite - - }, CancellationToken.None).ConfigureAwait(false); + }); return ToOptimizedResult(result); } public async Task<object> Get(GetChannelItems request) { - var result = await _channelManager.GetChannelItems(new ChannelItemQuery + var user = request.UserId.Equals(Guid.Empty) + ? null + : _userManager.GetUserById(request.UserId); + + var query = new InternalItemsQuery(user) { Limit = request.Limit, StartIndex = request.StartIndex, - UserId = request.UserId, - ChannelId = request.Id, - FolderId = request.FolderId, + ChannelIds = new Guid[] { new Guid(request.Id) }, + ParentId = string.IsNullOrWhiteSpace(request.FolderId) ? Guid.Empty : new Guid(request.FolderId), OrderBy = request.GetOrderBy(), - Filters = request.GetFilters().ToArray(), - Fields = request.GetItemFields() + DtoOptions = new Controller.Dto.DtoOptions + { + Fields = request.GetItemFields() + } + + }; + + foreach (var filter in request.GetFilters()) + { + switch (filter) + { + case ItemFilter.Dislikes: + query.IsLiked = false; + break; + case ItemFilter.IsFavorite: + query.IsFavorite = true; + break; + case ItemFilter.IsFavoriteOrLikes: + query.IsFavoriteOrLiked = true; + break; + case ItemFilter.IsFolder: + query.IsFolder = true; + break; + case ItemFilter.IsNotFolder: + query.IsFolder = false; + break; + case ItemFilter.IsPlayed: + query.IsPlayed = true; + break; + case ItemFilter.IsResumable: + query.IsResumable = true; + break; + case ItemFilter.IsUnplayed: + query.IsPlayed = false; + break; + case ItemFilter.Likes: + query.IsLiked = true; + break; + } + } - }, CancellationToken.None).ConfigureAwait(false); + var result = await _channelManager.GetChannelItems(query, CancellationToken.None).ConfigureAwait(false); return ToOptimizedResult(result); } public async Task<object> Get(GetLatestChannelItems request) { - var result = await _channelManager.GetLatestChannelItems(new AllChannelMediaQuery + var user = request.UserId.Equals(Guid.Empty) + ? null + : _userManager.GetUserById(request.UserId); + + var query = new InternalItemsQuery(user) { Limit = request.Limit, StartIndex = request.StartIndex, - ChannelIds = (request.ChannelIds ?? string.Empty).Split(',').Where(i => !string.IsNullOrWhiteSpace(i)).ToArray(), - UserId = request.UserId, - Filters = request.GetFilters().ToArray(), - Fields = request.GetItemFields() + ChannelIds = (request.ChannelIds ?? string.Empty).Split(',').Where(i => !string.IsNullOrWhiteSpace(i)).Select(i => new Guid(i)).ToArray(), + DtoOptions = new Controller.Dto.DtoOptions + { + Fields = request.GetItemFields() + } + }; + + foreach (var filter in request.GetFilters()) + { + switch (filter) + { + case ItemFilter.Dislikes: + query.IsLiked = false; + break; + case ItemFilter.IsFavorite: + query.IsFavorite = true; + break; + case ItemFilter.IsFavoriteOrLikes: + query.IsFavoriteOrLiked = true; + break; + case ItemFilter.IsFolder: + query.IsFolder = true; + break; + case ItemFilter.IsNotFolder: + query.IsFolder = false; + break; + case ItemFilter.IsPlayed: + query.IsPlayed = true; + break; + case ItemFilter.IsResumable: + query.IsResumable = true; + break; + case ItemFilter.IsUnplayed: + query.IsPlayed = false; + break; + case ItemFilter.Likes: + query.IsLiked = true; + break; + } + } - }, CancellationToken.None).ConfigureAwait(false); + var result = await _channelManager.GetLatestChannelItems(query, CancellationToken.None).ConfigureAwait(false); return ToOptimizedResult(result); } |
