aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/LiveTv/LiveTvService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/LiveTv/LiveTvService.cs')
-rw-r--r--MediaBrowser.Api/LiveTv/LiveTvService.cs61
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);