diff --git a/src/Jackett/Controllers/AdminController.cs b/src/Jackett/Controllers/AdminController.cs index e73aa30dd..841540ad1 100644 --- a/src/Jackett/Controllers/AdminController.cs +++ b/src/Jackett/Controllers/AdminController.cs @@ -233,6 +233,7 @@ namespace Jackett.Controllers item["configured"] = indexer.IsConfigured; item["site_link"] = indexer.SiteLink; item["language"] = indexer.Language; + item["last_error"] = indexer.LastError; item["potatoenabled"] = indexer.TorznabCaps.Categories.Select(c => c.ID).Any(i => PotatoController.MOVIE_CATS.Contains(i)); var caps = new JObject(); @@ -257,19 +258,24 @@ namespace Jackett.Controllers public async Task Test() { JToken jsonReply = new JObject(); + IIndexer indexer = null; try { var postData = await ReadPostDataJson(); string indexerString = (string)postData["indexer"]; + indexer = indexerService.GetIndexer(indexerString); await indexerService.TestIndexer(indexerString); - jsonReply["name"] = indexerService.GetIndexer(indexerString).DisplayName; + jsonReply["name"] = indexer.DisplayName; jsonReply["result"] = "success"; + indexer.LastError = null; } catch (Exception ex) { logger.Error(ex, "Exception in test_indexer"); jsonReply["result"] = "error"; jsonReply["error"] = ex.Message; + if (indexer != null) + indexer.LastError = ex.Message; } return Json(jsonReply); } diff --git a/src/Jackett/Indexers/BaseIndexer.cs b/src/Jackett/Indexers/BaseIndexer.cs index 7e56d7cbc..813b9270b 100644 --- a/src/Jackett/Indexers/BaseIndexer.cs +++ b/src/Jackett/Indexers/BaseIndexer.cs @@ -39,7 +39,17 @@ namespace Jackett.Indexers set { configData.CookieHeader.Value = value; } } - + public string LastError + { + get { return configData.LastError.Value; } + set + { + bool SaveNeeded = configData.LastError.Value != value && IsConfigured; + configData.LastError.Value = value; + if (SaveNeeded) + SaveConfig(); + } + } protected ConfigurationData configData; diff --git a/src/Jackett/Indexers/IIndexer.cs b/src/Jackett/Indexers/IIndexer.cs index 53bf23650..ad25d6048 100644 --- a/src/Jackett/Indexers/IIndexer.cs +++ b/src/Jackett/Indexers/IIndexer.cs @@ -17,6 +17,7 @@ namespace Jackett.Indexers string DisplayName { get; } string DisplayDescription { get; } string Language { get; } + string LastError { get; set; } string ID { get; } TorznabCapabilities TorznabCaps { get; } diff --git a/src/Jackett/Models/IndexerConfig/ConfigurationData.cs b/src/Jackett/Models/IndexerConfig/ConfigurationData.cs index c1197402f..506add0de 100644 --- a/src/Jackett/Models/IndexerConfig/ConfigurationData.cs +++ b/src/Jackett/Models/IndexerConfig/ConfigurationData.cs @@ -26,6 +26,7 @@ namespace Jackett.Models.IndexerConfig } public HiddenItem CookieHeader { get; private set; } = new HiddenItem { Name = "CookieHeader" }; + public HiddenItem LastError { get; private set; } = new HiddenItem { Name = "LastError" }; public ConfigurationData() {