aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Api/Controllers/ScheduledTasksController.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Jellyfin.Api/Controllers/ScheduledTasksController.cs')
-rw-r--r--Jellyfin.Api/Controllers/ScheduledTasksController.cs243
1 files changed, 121 insertions, 122 deletions
diff --git a/Jellyfin.Api/Controllers/ScheduledTasksController.cs b/Jellyfin.Api/Controllers/ScheduledTasksController.cs
index 832e14505..c8fa11ac6 100644
--- a/Jellyfin.Api/Controllers/ScheduledTasksController.cs
+++ b/Jellyfin.Api/Controllers/ScheduledTasksController.cs
@@ -8,154 +8,153 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
-namespace Jellyfin.Api.Controllers
+namespace Jellyfin.Api.Controllers;
+
+/// <summary>
+/// Scheduled Tasks Controller.
+/// </summary>
+[Authorize(Policy = Policies.RequiresElevation)]
+public class ScheduledTasksController : BaseJellyfinApiController
{
+ private readonly ITaskManager _taskManager;
+
/// <summary>
- /// Scheduled Tasks Controller.
+ /// Initializes a new instance of the <see cref="ScheduledTasksController"/> class.
/// </summary>
- [Authorize(Policy = Policies.RequiresElevation)]
- public class ScheduledTasksController : BaseJellyfinApiController
+ /// <param name="taskManager">Instance of the <see cref="ITaskManager"/> interface.</param>
+ public ScheduledTasksController(ITaskManager taskManager)
{
- private readonly ITaskManager _taskManager;
+ _taskManager = taskManager;
+ }
- /// <summary>
- /// Initializes a new instance of the <see cref="ScheduledTasksController"/> class.
- /// </summary>
- /// <param name="taskManager">Instance of the <see cref="ITaskManager"/> interface.</param>
- public ScheduledTasksController(ITaskManager taskManager)
- {
- _taskManager = taskManager;
- }
+ /// <summary>
+ /// Get tasks.
+ /// </summary>
+ /// <param name="isHidden">Optional filter tasks that are hidden, or not.</param>
+ /// <param name="isEnabled">Optional filter tasks that are enabled, or not.</param>
+ /// <response code="200">Scheduled tasks retrieved.</response>
+ /// <returns>The list of scheduled tasks.</returns>
+ [HttpGet]
+ [ProducesResponseType(StatusCodes.Status200OK)]
+ public IEnumerable<TaskInfo> GetTasks(
+ [FromQuery] bool? isHidden,
+ [FromQuery] bool? isEnabled)
+ {
+ IEnumerable<IScheduledTaskWorker> tasks = _taskManager.ScheduledTasks.OrderBy(o => o.Name);
- /// <summary>
- /// Get tasks.
- /// </summary>
- /// <param name="isHidden">Optional filter tasks that are hidden, or not.</param>
- /// <param name="isEnabled">Optional filter tasks that are enabled, or not.</param>
- /// <response code="200">Scheduled tasks retrieved.</response>
- /// <returns>The list of scheduled tasks.</returns>
- [HttpGet]
- [ProducesResponseType(StatusCodes.Status200OK)]
- public IEnumerable<TaskInfo> GetTasks(
- [FromQuery] bool? isHidden,
- [FromQuery] bool? isEnabled)
+ foreach (var task in tasks)
{
- IEnumerable<IScheduledTaskWorker> tasks = _taskManager.ScheduledTasks.OrderBy(o => o.Name);
-
- foreach (var task in tasks)
+ if (task.ScheduledTask is IConfigurableScheduledTask scheduledTask)
{
- if (task.ScheduledTask is IConfigurableScheduledTask scheduledTask)
+ if (isHidden.HasValue && isHidden.Value != scheduledTask.IsHidden)
{
- if (isHidden.HasValue && isHidden.Value != scheduledTask.IsHidden)
- {
- continue;
- }
-
- if (isEnabled.HasValue && isEnabled.Value != scheduledTask.IsEnabled)
- {
- continue;
- }
+ continue;
}
- yield return ScheduledTaskHelpers.GetTaskInfo(task);
+ if (isEnabled.HasValue && isEnabled.Value != scheduledTask.IsEnabled)
+ {
+ continue;
+ }
}
- }
- /// <summary>
- /// Get task by id.
- /// </summary>
- /// <param name="taskId">Task Id.</param>
- /// <response code="200">Task retrieved.</response>
- /// <response code="404">Task not found.</response>
- /// <returns>An <see cref="OkResult"/> containing the task on success, or a <see cref="NotFoundResult"/> if the task could not be found.</returns>
- [HttpGet("{taskId}")]
- [ProducesResponseType(StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status404NotFound)]
- public ActionResult<TaskInfo> GetTask([FromRoute, Required] string taskId)
- {
- var task = _taskManager.ScheduledTasks.FirstOrDefault(i =>
- string.Equals(i.Id, taskId, StringComparison.OrdinalIgnoreCase));
+ yield return ScheduledTaskHelpers.GetTaskInfo(task);
+ }
+ }
- if (task is null)
- {
- return NotFound();
- }
+ /// <summary>
+ /// Get task by id.
+ /// </summary>
+ /// <param name="taskId">Task Id.</param>
+ /// <response code="200">Task retrieved.</response>
+ /// <response code="404">Task not found.</response>
+ /// <returns>An <see cref="OkResult"/> containing the task on success, or a <see cref="NotFoundResult"/> if the task could not be found.</returns>
+ [HttpGet("{taskId}")]
+ [ProducesResponseType(StatusCodes.Status200OK)]
+ [ProducesResponseType(StatusCodes.Status404NotFound)]
+ public ActionResult<TaskInfo> GetTask([FromRoute, Required] string taskId)
+ {
+ var task = _taskManager.ScheduledTasks.FirstOrDefault(i =>
+ string.Equals(i.Id, taskId, StringComparison.OrdinalIgnoreCase));
- return ScheduledTaskHelpers.GetTaskInfo(task);
+ if (task is null)
+ {
+ return NotFound();
}
- /// <summary>
- /// Start specified task.
- /// </summary>
- /// <param name="taskId">Task Id.</param>
- /// <response code="204">Task started.</response>
- /// <response code="404">Task not found.</response>
- /// <returns>An <see cref="NoContentResult"/> on success, or a <see cref="NotFoundResult"/> if the file could not be found.</returns>
- [HttpPost("Running/{taskId}")]
- [ProducesResponseType(StatusCodes.Status204NoContent)]
- [ProducesResponseType(StatusCodes.Status404NotFound)]
- public ActionResult StartTask([FromRoute, Required] string taskId)
- {
- var task = _taskManager.ScheduledTasks.FirstOrDefault(o =>
- o.Id.Equals(taskId, StringComparison.OrdinalIgnoreCase));
+ return ScheduledTaskHelpers.GetTaskInfo(task);
+ }
- if (task is null)
- {
- return NotFound();
- }
+ /// <summary>
+ /// Start specified task.
+ /// </summary>
+ /// <param name="taskId">Task Id.</param>
+ /// <response code="204">Task started.</response>
+ /// <response code="404">Task not found.</response>
+ /// <returns>An <see cref="NoContentResult"/> on success, or a <see cref="NotFoundResult"/> if the file could not be found.</returns>
+ [HttpPost("Running/{taskId}")]
+ [ProducesResponseType(StatusCodes.Status204NoContent)]
+ [ProducesResponseType(StatusCodes.Status404NotFound)]
+ public ActionResult StartTask([FromRoute, Required] string taskId)
+ {
+ var task = _taskManager.ScheduledTasks.FirstOrDefault(o =>
+ o.Id.Equals(taskId, StringComparison.OrdinalIgnoreCase));
- _taskManager.Execute(task, new TaskOptions());
- return NoContent();
+ if (task is null)
+ {
+ return NotFound();
}
- /// <summary>
- /// Stop specified task.
- /// </summary>
- /// <param name="taskId">Task Id.</param>
- /// <response code="204">Task stopped.</response>
- /// <response code="404">Task not found.</response>
- /// <returns>An <see cref="OkResult"/> on success, or a <see cref="NotFoundResult"/> if the file could not be found.</returns>
- [HttpDelete("Running/{taskId}")]
- [ProducesResponseType(StatusCodes.Status204NoContent)]
- [ProducesResponseType(StatusCodes.Status404NotFound)]
- public ActionResult StopTask([FromRoute, Required] string taskId)
- {
- var task = _taskManager.ScheduledTasks.FirstOrDefault(o =>
- o.Id.Equals(taskId, StringComparison.OrdinalIgnoreCase));
+ _taskManager.Execute(task, new TaskOptions());
+ return NoContent();
+ }
- if (task is null)
- {
- return NotFound();
- }
+ /// <summary>
+ /// Stop specified task.
+ /// </summary>
+ /// <param name="taskId">Task Id.</param>
+ /// <response code="204">Task stopped.</response>
+ /// <response code="404">Task not found.</response>
+ /// <returns>An <see cref="OkResult"/> on success, or a <see cref="NotFoundResult"/> if the file could not be found.</returns>
+ [HttpDelete("Running/{taskId}")]
+ [ProducesResponseType(StatusCodes.Status204NoContent)]
+ [ProducesResponseType(StatusCodes.Status404NotFound)]
+ public ActionResult StopTask([FromRoute, Required] string taskId)
+ {
+ var task = _taskManager.ScheduledTasks.FirstOrDefault(o =>
+ o.Id.Equals(taskId, StringComparison.OrdinalIgnoreCase));
- _taskManager.Cancel(task);
- return NoContent();
+ if (task is null)
+ {
+ return NotFound();
}
- /// <summary>
- /// Update specified task triggers.
- /// </summary>
- /// <param name="taskId">Task Id.</param>
- /// <param name="triggerInfos">Triggers.</param>
- /// <response code="204">Task triggers updated.</response>
- /// <response code="404">Task not found.</response>
- /// <returns>An <see cref="OkResult"/> on success, or a <see cref="NotFoundResult"/> if the file could not be found.</returns>
- [HttpPost("{taskId}/Triggers")]
- [ProducesResponseType(StatusCodes.Status204NoContent)]
- [ProducesResponseType(StatusCodes.Status404NotFound)]
- public ActionResult UpdateTask(
- [FromRoute, Required] string taskId,
- [FromBody, Required] TaskTriggerInfo[] triggerInfos)
- {
- var task = _taskManager.ScheduledTasks.FirstOrDefault(o =>
- o.Id.Equals(taskId, StringComparison.OrdinalIgnoreCase));
- if (task is null)
- {
- return NotFound();
- }
+ _taskManager.Cancel(task);
+ return NoContent();
+ }
- task.Triggers = triggerInfos;
- return NoContent();
+ /// <summary>
+ /// Update specified task triggers.
+ /// </summary>
+ /// <param name="taskId">Task Id.</param>
+ /// <param name="triggerInfos">Triggers.</param>
+ /// <response code="204">Task triggers updated.</response>
+ /// <response code="404">Task not found.</response>
+ /// <returns>An <see cref="OkResult"/> on success, or a <see cref="NotFoundResult"/> if the file could not be found.</returns>
+ [HttpPost("{taskId}/Triggers")]
+ [ProducesResponseType(StatusCodes.Status204NoContent)]
+ [ProducesResponseType(StatusCodes.Status404NotFound)]
+ public ActionResult UpdateTask(
+ [FromRoute, Required] string taskId,
+ [FromBody, Required] TaskTriggerInfo[] triggerInfos)
+ {
+ var task = _taskManager.ScheduledTasks.FirstOrDefault(o =>
+ o.Id.Equals(taskId, StringComparison.OrdinalIgnoreCase));
+ if (task is null)
+ {
+ return NotFound();
}
+
+ task.Triggers = triggerInfos;
+ return NoContent();
}
}