mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-06-02 21:24:20 -04:00
Adding helper methods inside of tasks to allow users to use them freely
This commit is contained in:
parent
f00d1ec4e9
commit
4a41dd6f88
@ -1,9 +1,13 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using Kyoo.Models;
|
||||||
|
|
||||||
namespace Kyoo.Controllers
|
namespace Kyoo.Controllers
|
||||||
{
|
{
|
||||||
public interface ITaskManager
|
public interface ITaskManager
|
||||||
{
|
{
|
||||||
bool StartTask(string taskSlug, string arguments = null);
|
bool StartTask(string taskSlug, string arguments = null);
|
||||||
|
ITask GetRunningTask();
|
||||||
void ReloadTask();
|
void ReloadTask();
|
||||||
|
IEnumerable<ITask> GetAllTasks();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
@ -13,5 +14,7 @@ namespace Kyoo.Models
|
|||||||
public bool RunOnStartup { get; }
|
public bool RunOnStartup { get; }
|
||||||
public int Priority { get; }
|
public int Priority { get; }
|
||||||
public Task Run(IServiceProvider serviceProvider, CancellationToken cancellationToken, string arguments = null);
|
public Task Run(IServiceProvider serviceProvider, CancellationToken cancellationToken, string arguments = null);
|
||||||
|
public IEnumerable<string> GetPossibleParameters();
|
||||||
|
public int? Progress();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -16,6 +16,7 @@ namespace Kyoo.Controllers
|
|||||||
|
|
||||||
private List<ITask> _tasks = new List<ITask>();
|
private List<ITask> _tasks = new List<ITask>();
|
||||||
private CancellationTokenSource _taskToken = new CancellationTokenSource();
|
private CancellationTokenSource _taskToken = new CancellationTokenSource();
|
||||||
|
private ITask _runningTask;
|
||||||
private Queue<(ITask, string)> _queuedTasks = new Queue<(ITask, string)>();
|
private Queue<(ITask, string)> _queuedTasks = new Queue<(ITask, string)>();
|
||||||
|
|
||||||
public TaskManager(IServiceProvider serviceProvider, IPluginManager pluginManager)
|
public TaskManager(IServiceProvider serviceProvider, IPluginManager pluginManager)
|
||||||
@ -31,10 +32,14 @@ namespace Kyoo.Controllers
|
|||||||
if (_queuedTasks.Any())
|
if (_queuedTasks.Any())
|
||||||
{
|
{
|
||||||
(ITask task, string arguments) = _queuedTasks.Dequeue();
|
(ITask task, string arguments) = _queuedTasks.Dequeue();
|
||||||
|
_runningTask = task;
|
||||||
await task.Run(_serviceProvider, _taskToken.Token, arguments);
|
await task.Run(_serviceProvider, _taskToken.Token, arguments);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
await Task.Delay(1000, cancellationToken);
|
{
|
||||||
|
|
||||||
|
await Task.Delay(1000_000, cancellationToken);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,6 +65,11 @@ namespace Kyoo.Controllers
|
|||||||
_queuedTasks.Enqueue((task, arguments));
|
_queuedTasks.Enqueue((task, arguments));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ITask GetRunningTask()
|
||||||
|
{
|
||||||
|
return _runningTask;
|
||||||
|
}
|
||||||
|
|
||||||
public void ReloadTask()
|
public void ReloadTask()
|
||||||
{
|
{
|
||||||
@ -70,5 +80,10 @@ namespace Kyoo.Controllers
|
|||||||
foreach (IPlugin plugin in _pluginManager.GetAllPlugins())
|
foreach (IPlugin plugin in _pluginManager.GetAllPlugins())
|
||||||
_tasks.AddRange(plugin.Tasks);
|
_tasks.AddRange(plugin.Tasks);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IEnumerable<ITask> GetAllTasks()
|
||||||
|
{
|
||||||
|
return _tasks;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -26,6 +26,16 @@ namespace Kyoo.Controllers
|
|||||||
private ITranscoder _transcoder;
|
private ITranscoder _transcoder;
|
||||||
private IConfiguration _config;
|
private IConfiguration _config;
|
||||||
|
|
||||||
|
public IEnumerable<string> GetPossibleParameters()
|
||||||
|
{
|
||||||
|
return _libraryManager.GetLibraries().Select(x => x.Slug);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int? Progress()
|
||||||
|
{
|
||||||
|
// TODO implement this later.
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public async Task Run(IServiceProvider serviceProvider, CancellationToken cancellationToken, string argument = null)
|
public async Task Run(IServiceProvider serviceProvider, CancellationToken cancellationToken, string argument = null)
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@ -49,5 +50,15 @@ namespace Kyoo.Tasks
|
|||||||
}
|
}
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IEnumerable<string> GetPossibleParameters()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int? Progress()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Kyoo.Controllers;
|
using Kyoo.Controllers;
|
||||||
@ -22,5 +23,15 @@ namespace Kyoo.Tasks
|
|||||||
pluginManager.ReloadPlugins();
|
pluginManager.ReloadPlugins();
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IEnumerable<string> GetPossibleParameters()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int? Progress()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -17,7 +17,7 @@ namespace Kyoo.Api
|
|||||||
|
|
||||||
|
|
||||||
[HttpGet("{taskSlug}/{args?}")]
|
[HttpGet("{taskSlug}/{args?}")]
|
||||||
// [Authorize(Policy="Admin")]
|
[Authorize(Policy="Admin")]
|
||||||
public IActionResult RunTask(string taskSlug, string args = null)
|
public IActionResult RunTask(string taskSlug, string args = null)
|
||||||
{
|
{
|
||||||
if (_taskManager.StartTask(taskSlug, args))
|
if (_taskManager.StartTask(taskSlug, args))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user