BackEnd/YTManager/Controllers/AdminController.cs

49 lines
1.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using YTManager;
using YTManager.Models;
using Hangfire.Storage;
namespace YTManager.Controllers {
[Produces("application/json")]
[Route("api/Admin")]
public class AdminController : Controller {
// POST api/Admin/refreshytvids
// Force a general youtube channel update.
[HttpPost("job_update")]
public void Post_forcejobupdate() {
Hangfire.RecurringJob.Trigger(Startup.periodicupdatejobID);
}
// POST api/Admin/job_periodicupdate/YTChannelID
// Force a YT Channel update.
[HttpPost("job_update/{id}")]
public void Post_forcejobupdateID([FromRoute] string id) {
Hangfire.BackgroundJob.Enqueue(() => YTManager.Tasks.FetchVideos.run(id));
}
// POST api/Admin/job_periodicupdate
// Ensures that the background YT Channel update API is running.
[HttpPost("job_periodicupdate")]
public void Post_periodicupdatejob() {
Hangfire.RecurringJob.AddOrUpdate(
Startup.periodicupdatejobID,
() => YTManager.Tasks.FetchVideos.run(""),
Hangfire.Cron.Hourly);
}
// GET api/Admin/job_periodicupdate
// Check if the periodic update job is enqued.
[HttpGet("job_periodicupdate")]
public IActionResult Get_periodicupdatejob() {
bool exists = Hangfire.JobStorage.Current.GetConnection().GetRecurringJobs().Count(j => j.Id == Startup.periodicupdatejobID) > 0;
return Ok(exists ? "true" : "false");
}
}
}