diff options
Diffstat (limited to 'MediaBrowser.Api/ItemUpdateService.cs')
| -rw-r--r-- | MediaBrowser.Api/ItemUpdateService.cs | 41 |
1 files changed, 38 insertions, 3 deletions
diff --git a/MediaBrowser.Api/ItemUpdateService.cs b/MediaBrowser.Api/ItemUpdateService.cs index 10149906c..95876f1a5 100644 --- a/MediaBrowser.Api/ItemUpdateService.cs +++ b/MediaBrowser.Api/ItemUpdateService.cs @@ -3,6 +3,7 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.LiveTv; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using ServiceStack.ServiceHost; @@ -13,6 +14,14 @@ using System.Threading.Tasks; namespace MediaBrowser.Api { + [Route("/LiveTv/Channels/{ChannelId}", "POST")] + [Api(("Updates an item"))] + public class UpdateChannel : BaseItemDto, IReturnVoid + { + [ApiMember(Name = "ChannelId", Description = "The id of the channel", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")] + public string ChannelId { get; set; } + } + [Route("/Items/{ItemId}", "POST")] [Api(("Updates an item"))] public class UpdateItem : BaseItemDto, IReturnVoid @@ -73,11 +82,13 @@ namespace MediaBrowser.Api { private readonly ILibraryManager _libraryManager; private readonly IDtoService _dtoService; + private readonly ILiveTvManager _liveTv; - public ItemUpdateService(ILibraryManager libraryManager, IDtoService dtoService) + public ItemUpdateService(ILibraryManager libraryManager, IDtoService dtoService, ILiveTvManager liveTv) { _libraryManager = libraryManager; _dtoService = dtoService; + _liveTv = liveTv; } public void Post(UpdateItem request) @@ -87,6 +98,13 @@ namespace MediaBrowser.Api Task.WaitAll(task); } + public void Post(UpdateChannel request) + { + var task = UpdateItem(request); + + Task.WaitAll(task); + } + private Task UpdateItem(UpdateItem request) { var item = _dtoService.GetItemByDtoId(request.ItemId); @@ -112,6 +130,15 @@ namespace MediaBrowser.Api await _libraryManager.UpdateItem(item, ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false); } + private async Task UpdateItem(UpdateChannel request) + { + var item = _liveTv.GetChannel(request.Id); + + UpdateItem(request, item); + + await _libraryManager.UpdateItem(item, ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false); + } + public void Post(UpdateArtist request) { var task = UpdateItem(request); @@ -226,8 +253,16 @@ namespace MediaBrowser.Api item.Overview = request.Overview; item.Genres = request.Genres; item.Tags = request.Tags; - item.Studios = request.Studios.Select(x => x.Name).ToList(); - item.People = request.People.Select(x => new PersonInfo { Name = x.Name, Role = x.Role, Type = x.Type }).ToList(); + + if (request.Studios != null) + { + item.Studios = request.Studios.Select(x => x.Name).ToList(); + } + + if (request.People != null) + { + item.People = request.People.Select(x => new PersonInfo { Name = x.Name, Role = x.Role, Type = x.Type }).ToList(); + } if (request.DateCreated.HasValue) { |
