using System; using System.Collections.Generic; using System.Web; using System.Web.Mvc; using NLog; using NzbDrone.Core.Model; using NzbDrone.Core.Providers; using NzbDrone.Core.Providers.Jobs; using NzbDrone.Web.Models; namespace NzbDrone.Web.Controllers { public class CommandController : Controller { private readonly JobProvider _jobProvider; private readonly SabProvider _sabProvider; private readonly SmtpProvider _smtpProvider; private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); public CommandController(JobProvider jobProvider, SabProvider sabProvider, SmtpProvider smtpProvider) { _jobProvider = jobProvider; _sabProvider = sabProvider; _smtpProvider = smtpProvider; } public JsonResult RssSync() { _jobProvider.QueueJob(typeof(RssSyncJob)); return new JsonResult { Data = "ok", JsonRequestBehavior = JsonRequestBehavior.AllowGet }; } public JsonResult BacklogSearch() { _jobProvider.QueueJob(typeof(BacklogSearchJob)); return new JsonResult { Data = "ok", JsonRequestBehavior = JsonRequestBehavior.AllowGet }; } public JsonResult SyncEpisodesOnDisk(int seriesId) { //Syncs the episodes on disk for the specified series _jobProvider.QueueJob(typeof(DiskScanJob), seriesId); return new JsonResult { Data = "ok", JsonRequestBehavior = JsonRequestBehavior.AllowGet }; } public JsonResult UpdateInfo(int seriesId) { //Syncs the episodes on disk for the specified series _jobProvider.QueueJob(typeof(UpdateInfoJob), seriesId); return new JsonResult { Data = "ok", JsonRequestBehavior = JsonRequestBehavior.AllowGet }; } [HttpPost] public JsonResult GetSabnzbdCategories(string host, int port, string apiKey, string username, string password) { try { return new JsonResult {Data = _sabProvider.GetCategories(host, port, apiKey, username, password)}; } catch (Exception ex) { Logger.Warn("Unable to get Categories from SABnzbd"); Logger.DebugException(ex.Message, ex); return Json(new NotificationResult { Title = "Failed", Text = "Unable to get SABnzbd Categories", NotificationType = NotificationType.Error }); } } [HttpPost] public JsonResult SendTestEmail(string server, int port, bool ssl, string username, string password, string fromAddress, string toAddresses) { if (_smtpProvider.SendTestEmail(server, port, ssl, username, password, fromAddress, toAddresses)) return Json(new NotificationResult { Title = "Successfully sent test email." }); return Json(new NotificationResult { Title = "Failed", Text = "Unable to send Email, please check your settings", NotificationType = NotificationType.Error }); } } }