diff options
Diffstat (limited to 'MediaBrowser.Api/LiveTv/LiveTvService.cs')
| -rw-r--r-- | MediaBrowser.Api/LiveTv/LiveTvService.cs | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/MediaBrowser.Api/LiveTv/LiveTvService.cs b/MediaBrowser.Api/LiveTv/LiveTvService.cs index 50e7319b9..5b123eb97 100644 --- a/MediaBrowser.Api/LiveTv/LiveTvService.cs +++ b/MediaBrowser.Api/LiveTv/LiveTvService.cs @@ -154,6 +154,23 @@ namespace MediaBrowser.Api.LiveTv public string MaxEndDate { get; set; } } + [Route("/LiveTv/Programs/Recommended", "GET")] + [Api(Description = "Gets available live tv epgs..")] + public class GetRecommendedPrograms : IReturn<QueryResult<ProgramInfoDto>> + { + [ApiMember(Name = "UserId", Description = "Optional filter by user id.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET,POST")] + public string UserId { get; set; } + + [ApiMember(Name = "Limit", Description = "Optional. The maximum number of records to return", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] + public int? Limit { get; set; } + + [ApiMember(Name = "IsAiring", Description = "Optional. Filter by programs that are currently airing, or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] + public bool? IsAiring { get; set; } + + [ApiMember(Name = "HasAired", Description = "Optional. Filter by programs that have completed airing, or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] + public bool? HasAired { get; set; } + } + [Route("/LiveTv/Programs/{Id}", "GET")] [Api(Description = "Gets a live tv program")] public class GetProgram : IReturn<ProgramInfoDto> @@ -258,6 +275,21 @@ namespace MediaBrowser.Api.LiveTv _userManager = userManager; } + private void AssertUserCanManageLiveTv() + { + var user = AuthorizationRequestFilterAttribute.GetCurrentUser(Request, _userManager); + + if (user == null) + { + throw new UnauthorizedAccessException("Anonymous live tv management is not allowed."); + } + + if (!user.Configuration.EnableLiveTvManagement) + { + throw new UnauthorizedAccessException("The current user does not have permission to manage live tv."); + } + } + public object Get(GetServices request) { var services = _liveTvManager.Services @@ -331,6 +363,21 @@ namespace MediaBrowser.Api.LiveTv return ToOptimizedResult(result); } + public object Get(GetRecommendedPrograms request) + { + var query = new RecommendedProgramQuery + { + UserId = request.UserId, + IsAiring = request.IsAiring, + Limit = request.Limit, + HasAired = request.HasAired + }; + + var result = _liveTvManager.GetRecommendedPrograms(query, CancellationToken.None).Result; + + return ToOptimizedResult(result); + } + public object Post(GetPrograms request) { return Get(request); @@ -383,6 +430,8 @@ namespace MediaBrowser.Api.LiveTv public void Delete(DeleteRecording request) { + AssertUserCanManageLiveTv(); + var task = _liveTvManager.DeleteRecording(request.Id); Task.WaitAll(task); @@ -390,6 +439,8 @@ namespace MediaBrowser.Api.LiveTv public void Delete(CancelTimer request) { + AssertUserCanManageLiveTv(); + var task = _liveTvManager.CancelTimer(request.Id); Task.WaitAll(task); @@ -397,6 +448,8 @@ namespace MediaBrowser.Api.LiveTv public void Post(UpdateTimer request) { + AssertUserCanManageLiveTv(); + var task = _liveTvManager.UpdateTimer(request, CancellationToken.None); Task.WaitAll(task); @@ -423,6 +476,8 @@ namespace MediaBrowser.Api.LiveTv public void Delete(CancelSeriesTimer request) { + AssertUserCanManageLiveTv(); + var task = _liveTvManager.CancelSeriesTimer(request.Id); Task.WaitAll(task); @@ -430,6 +485,8 @@ namespace MediaBrowser.Api.LiveTv public void Post(UpdateSeriesTimer request) { + AssertUserCanManageLiveTv(); + var task = _liveTvManager.UpdateSeriesTimer(request, CancellationToken.None); Task.WaitAll(task); @@ -462,6 +519,8 @@ namespace MediaBrowser.Api.LiveTv public void Post(CreateSeriesTimer request) { + AssertUserCanManageLiveTv(); + var task = _liveTvManager.CreateSeriesTimer(request, CancellationToken.None); Task.WaitAll(task); @@ -469,6 +528,8 @@ namespace MediaBrowser.Api.LiveTv public void Post(CreateTimer request) { + AssertUserCanManageLiveTv(); + var task = _liveTvManager.CreateTimer(request, CancellationToken.None); Task.WaitAll(task); |
