using System.Text.Json.Nodes; using Core; using Interface.Jobs; using Microsoft.AspNetCore.Mvc; namespace WebApi.Controllers; public class JobTriggerController : BaseController { private readonly ILogTotalNotifyJobRegistry _logTotalNotifyJobRegistry; private readonly IDiskActionMonitorRegistry _diskActionMonitorRegistry; private readonly IHealthyTaskRegistry _healthyTaskRegistry; private readonly IRSyncTaskRegistry _rSyncTaskRegistry; private readonly IStartupRegistry _startupRegistry; private readonly IShutdownRegistry _shutdownRegistry; private readonly IChineseNfoRegistry _chineseNfoRegistry; private readonly IDiskMonitorRegistry _diskMonitorRegistry; /// /// ctor /// public JobTriggerController( ILogTotalNotifyJobRegistry logTotalNotifyJobRegistry, IDiskActionMonitorRegistry diskActionMonitorRegistry, IHealthyTaskRegistry healthyTaskRegistry, IRSyncTaskRegistry rSyncTaskRegistry, IStartupRegistry startupRegistry, IShutdownRegistry shutdownRegistry, IChineseNfoRegistry chineseNfoRegistry, IDiskMonitorRegistry diskMonitorRegistry) { _logTotalNotifyJobRegistry = logTotalNotifyJobRegistry; _diskActionMonitorRegistry = diskActionMonitorRegistry; _healthyTaskRegistry = healthyTaskRegistry; _rSyncTaskRegistry = rSyncTaskRegistry; _startupRegistry = startupRegistry; _shutdownRegistry = shutdownRegistry; _chineseNfoRegistry = chineseNfoRegistry; _diskMonitorRegistry = diskMonitorRegistry; } [HttpGet] public string LogTotalNotify() { _logTotalNotifyJobRegistry.Job(); return "OK"; } [HttpGet] public string DiskActionMonitor() { _diskActionMonitorRegistry.Job(); return "OK"; } [HttpGet] public string HealthyTask() { _healthyTaskRegistry.Job(); return "OK"; } [HttpGet] public string RSyncTask() { _rSyncTaskRegistry.Job(); return "OK"; } [HttpGet] public string Startup() { _startupRegistry.Job(); return "OK"; } [HttpGet] public string Shutdown() { _shutdownRegistry.Job(); return "OK"; } [HttpGet] public string CancelShutdown() { _shutdownRegistry.CancelShutdown(); return "OK"; } [HttpGet] public string ConvertChineseNfo( bool ignoreLocked = true, bool ignoreCompleted = true) { _chineseNfoRegistry.Job(ignoreLocked: ignoreLocked, ignoreCompleted: ignoreCompleted); return "OK"; } [HttpPost] public async Task SonarrChangedConvertChineseNfo() { var body = Request.Body; using var reader = new StreamReader(body); var text = await reader.ReadToEndAsync(); var json = JsonNode.Parse(text); var tmdbId = json?["series"]?["tmdbId"]?.ToString(); var seasonNumber = json?["episodes"]?[0]?["seasonNumber"]?.ToString(); var episodeNumber = json?["episodes"]?[0]?["episodeNumber"]?.ToString(); var path = json?["series"]?["path"]?.ToString(); var eventType = json?["eventType"]?.ToString(); await WxNotify.SendCommonAsync($"SonarrChangedConvertChineseNfo: {tmdbId}, {seasonNumber}, {episodeNumber}, {path}, {eventType}"); _chineseNfoRegistry.Job(ignoreLocked: true, ignoreCompleted: true); return "OK"; } [HttpGet] public string DiskMonitor() { _diskMonitorRegistry.Job(); return "OK"; } }