jobs api
This commit is contained in:
45
Pilz.Net/Api/Server/JobsHandler.cs
Normal file
45
Pilz.Net/Api/Server/JobsHandler.cs
Normal file
@@ -0,0 +1,45 @@
|
||||
using Pilz.Jobs;
|
||||
using Pilz.Net.Api.Entities;
|
||||
using Pilz.Net.Extensions;
|
||||
|
||||
namespace Pilz.Net.Api.Server;
|
||||
|
||||
public class JobsHandler(IApiServer server)
|
||||
{
|
||||
[ApiMessageHandler("/jobs", "GET")]
|
||||
public virtual ApiResult GetAll()
|
||||
{
|
||||
return server.Jobs.Jobs.Select(ToClient).ToItemsResult();
|
||||
}
|
||||
|
||||
[ApiMessageHandler("/jobs/{name}", "GET")]
|
||||
public virtual ApiResult Get(string name)
|
||||
{
|
||||
if (server.Jobs.Jobs.FirstOrDefault(n => n.Name == name) is not Job job)
|
||||
return ApiResult.BadRequest();
|
||||
return ToClient(job).ToItemResult();
|
||||
}
|
||||
|
||||
[ApiMessageHandler("/jobs/{name}", "POST")]
|
||||
public virtual ApiResult Execute(string name)
|
||||
{
|
||||
if (server.Jobs.Jobs.FirstOrDefault(n => n.Name == name) is not Job job)
|
||||
return ApiResult.BadRequest();
|
||||
|
||||
var now = DateTime.Now;
|
||||
job.Execute(new(server.Jobs));
|
||||
job.LastExecution = now;
|
||||
|
||||
return ApiResult.Ok();
|
||||
}
|
||||
|
||||
protected virtual JobInfo ToClient(Job job)
|
||||
{
|
||||
return new JobInfo
|
||||
{
|
||||
Name = job.Name,
|
||||
Interval = job.Interval,
|
||||
LastExecution = job.LastExecution,
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user