diff --git a/src/NzbDrone.Core/HealthCheck/Checks/OutdatedDefinitionCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/OutdatedDefinitionCheck.cs index f2e5bee0c..01f368951 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/OutdatedDefinitionCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/OutdatedDefinitionCheck.cs @@ -27,7 +27,8 @@ namespace NzbDrone.Core.HealthCheck.Checks { var blocklist = _indexerDefinitionUpdateService.GetBlocklist(); - var oldIndexers = _indexerFactory.All().Where(i => i.Implementation == "Cardigann" && blocklist.Contains(((CardigannSettings)i.Settings).DefinitionFile)).ToList(); + var oldIndexers = _indexerFactory.AllProviders(false) + .Where(i => i.IsObsolete() || (i.Definition.Implementation == "Cardigann" && blocklist.Contains(((CardigannSettings)i.Definition.Settings).DefinitionFile))).ToList(); if (oldIndexers.Count == 0) { diff --git a/src/NzbDrone.Core/IndexerVersions/IndexerDefinitionUpdateService.cs b/src/NzbDrone.Core/IndexerVersions/IndexerDefinitionUpdateService.cs index 5941c3666..53c0249af 100644 --- a/src/NzbDrone.Core/IndexerVersions/IndexerDefinitionUpdateService.cs +++ b/src/NzbDrone.Core/IndexerVersions/IndexerDefinitionUpdateService.cs @@ -29,15 +29,11 @@ namespace NzbDrone.Core.IndexerVersions private const int DEFINITION_VERSION = 3; private readonly List _defintionBlocklist = new List() { - "aither", "animeworld", - "blutopia", "beyond-hd", "beyond-hd-oneurl", "danishbytes", - "desitorrents", "hdbits", - "shareisland", "lat-team" }; diff --git a/src/NzbDrone.Core/Indexers/Definitions/Aither.cs b/src/NzbDrone.Core/Indexers/Definitions/Aither.cs index 1de88cea6..a3324507a 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/Aither.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/Aither.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using NLog; using NzbDrone.Common.Http; @@ -7,6 +8,7 @@ using NzbDrone.Core.Messaging.Events; namespace NzbDrone.Core.Indexers.Definitions { + [Obsolete] public class Aither : Unit3dBase { public override string Name => "Aither"; diff --git a/src/NzbDrone.Core/Indexers/Definitions/AnimeWorld.cs b/src/NzbDrone.Core/Indexers/Definitions/AnimeWorld.cs index 9a380fcf3..709a4b118 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/AnimeWorld.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/AnimeWorld.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using NLog; using NzbDrone.Common.Http; @@ -7,6 +8,7 @@ using NzbDrone.Core.Messaging.Events; namespace NzbDrone.Core.Indexers.Definitions { + [Obsolete] public class AnimeWorld : Unit3dBase { public override string Name => "AnimeWorld"; diff --git a/src/NzbDrone.Core/Indexers/Definitions/Blutopia.cs b/src/NzbDrone.Core/Indexers/Definitions/Blutopia.cs index 45302f0d9..c46c8e97d 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/Blutopia.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/Blutopia.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using NLog; using NzbDrone.Common.Http; @@ -7,6 +8,7 @@ using NzbDrone.Core.Messaging.Events; namespace NzbDrone.Core.Indexers.Definitions { + [Obsolete] public class Blutopia : Unit3dBase { public override string Name => "Blutopia"; diff --git a/src/NzbDrone.Core/Indexers/Definitions/DesiTorrents.cs b/src/NzbDrone.Core/Indexers/Definitions/DesiTorrents.cs index 8f0fe75a7..ed906e6dc 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/DesiTorrents.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/DesiTorrents.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.Linq; using NLog; @@ -8,6 +9,7 @@ using NzbDrone.Core.Parser.Model; namespace NzbDrone.Core.Indexers.Definitions { + [Obsolete] public class DesiTorrents : Unit3dBase { public override string Name => "DesiTorrents"; diff --git a/src/NzbDrone.Core/Indexers/Definitions/DigitalCore.cs b/src/NzbDrone.Core/Indexers/Definitions/DigitalCore.cs index 432946efb..12a26587a 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/DigitalCore.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/DigitalCore.cs @@ -20,6 +20,7 @@ using NzbDrone.Core.Validation; namespace NzbDrone.Core.Indexers.Definitions { + [Obsolete] public class DigitalCore : TorrentIndexerBase { public override string Name => "DigitalCore"; diff --git a/src/NzbDrone.Core/Indexers/Definitions/InternetArchive.cs b/src/NzbDrone.Core/Indexers/Definitions/InternetArchive.cs index 4ae3ada07..b5385f479 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/InternetArchive.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/InternetArchive.cs @@ -17,6 +17,7 @@ using NzbDrone.Core.Validation; namespace NzbDrone.Core.Indexers.Definitions { + [Obsolete] public class InternetArchive : TorrentIndexerBase { public override string Name => "Internet Archive"; diff --git a/src/NzbDrone.Core/Indexers/Definitions/Milkie.cs b/src/NzbDrone.Core/Indexers/Definitions/Milkie.cs index 6b465ca5a..d1baf4cc8 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/Milkie.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/Milkie.cs @@ -15,6 +15,7 @@ using NzbDrone.Core.Validation; namespace NzbDrone.Core.Indexers.Definitions { + [Obsolete] public class Milkie : TorrentIndexerBase { public override string Name => "Milkie"; diff --git a/src/NzbDrone.Core/Indexers/Definitions/ShareIsland.cs b/src/NzbDrone.Core/Indexers/Definitions/ShareIsland.cs index 76bc55ab3..9fbeae9fb 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/ShareIsland.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/ShareIsland.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using NLog; using NzbDrone.Common.Http; @@ -7,6 +8,7 @@ using NzbDrone.Core.Messaging.Events; namespace NzbDrone.Core.Indexers.Definitions { + [Obsolete] public class ShareIsland : Unit3dBase { public override string Name => "ShareIsland"; diff --git a/src/NzbDrone.Core/Indexers/Definitions/SuperBits.cs b/src/NzbDrone.Core/Indexers/Definitions/SuperBits.cs index 4b433eea3..1ae39db67 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/SuperBits.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/SuperBits.cs @@ -18,6 +18,7 @@ using NzbDrone.Core.Validation; namespace NzbDrone.Core.Indexers.Definitions { + [Obsolete] public class SuperBits : TorrentIndexerBase { public override string Name => "SuperBits"; diff --git a/src/NzbDrone.Core/Indexers/Definitions/ThePirateBay.cs b/src/NzbDrone.Core/Indexers/Definitions/ThePirateBay.cs index a71a5da86..c88fb943c 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/ThePirateBay.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/ThePirateBay.cs @@ -16,6 +16,7 @@ using NzbDrone.Core.Validation; namespace NzbDrone.Core.Indexers.Definitions { + [Obsolete] public class ThePirateBay : TorrentIndexerBase { public override string Name => "ThePirateBay"; diff --git a/src/NzbDrone.Core/Indexers/Definitions/TorrentLeech.cs b/src/NzbDrone.Core/Indexers/Definitions/TorrentLeech.cs index aa47689d4..b4e256c5e 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/TorrentLeech.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/TorrentLeech.cs @@ -20,6 +20,7 @@ using NzbDrone.Core.Validation; namespace NzbDrone.Core.Indexers.Definitions { + [Obsolete] public class TorrentLeech : TorrentIndexerBase { public override string Name => "TorrentLeech"; diff --git a/src/NzbDrone.Core/Indexers/Definitions/TorrentParadiseMl.cs b/src/NzbDrone.Core/Indexers/Definitions/TorrentParadiseMl.cs index 1d7761bc9..7546ac313 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/TorrentParadiseMl.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/TorrentParadiseMl.cs @@ -18,6 +18,7 @@ using NzbDrone.Core.Validation; namespace NzbDrone.Core.Indexers.Definitions { + [Obsolete] public class TorrentParadiseMl : TorrentIndexerBase { public override string Name => "TorrentParadiseMl"; diff --git a/src/NzbDrone.Core/Indexers/Definitions/YTS.cs b/src/NzbDrone.Core/Indexers/Definitions/YTS.cs index 0716f85f5..530c976e1 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/YTS.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/YTS.cs @@ -18,6 +18,7 @@ using NzbDrone.Core.Validation; namespace NzbDrone.Core.Indexers.Definitions { + [Obsolete] public class YTS : TorrentIndexerBase { public override string Name => "YTS"; diff --git a/src/NzbDrone.Core/Indexers/IIndexer.cs b/src/NzbDrone.Core/Indexers/IIndexer.cs index 4b4a7b783..1e02c896d 100644 --- a/src/NzbDrone.Core/Indexers/IIndexer.cs +++ b/src/NzbDrone.Core/Indexers/IIndexer.cs @@ -27,6 +27,7 @@ namespace NzbDrone.Core.Indexers Task Fetch(BasicSearchCriteria searchCriteria); Task Download(Uri link); + bool IsObsolete(); IndexerCapabilities GetCapabilities(); } diff --git a/src/NzbDrone.Core/Indexers/IndexerBase.cs b/src/NzbDrone.Core/Indexers/IndexerBase.cs index 2e10802a0..2e9f3058a 100644 --- a/src/NzbDrone.Core/Indexers/IndexerBase.cs +++ b/src/NzbDrone.Core/Indexers/IndexerBase.cs @@ -45,6 +45,18 @@ namespace NzbDrone.Core.Indexers public Type ConfigContract => typeof(TSettings); + public bool IsObsolete() + { + var attributes = GetType().GetCustomAttributes(false); + + foreach (ObsoleteAttribute attribute in attributes.OfType()) + { + return true; + } + + return false; + } + public virtual ProviderMessage Message => null; public virtual IEnumerable DefaultDefinitions diff --git a/src/NzbDrone.Core/Indexers/IndexerFactory.cs b/src/NzbDrone.Core/Indexers/IndexerFactory.cs index 26f20a4e0..3b5c7bad2 100644 --- a/src/NzbDrone.Core/Indexers/IndexerFactory.cs +++ b/src/NzbDrone.Core/Indexers/IndexerFactory.cs @@ -147,6 +147,11 @@ namespace NzbDrone.Core.Indexers { foreach (var provider in _providers) { + if (provider.IsObsolete()) + { + continue; + } + var definitions = provider.DefaultDefinitions .Where(v => v.Name != null && (v.Name != typeof(Cardigann.Cardigann).Name || v.Name != typeof(Newznab.Newznab).Name || v.Name != typeof(Torznab.Torznab).Name)); diff --git a/src/NzbDrone.Core/ThingiProvider/IProvider.cs b/src/NzbDrone.Core/ThingiProvider/IProvider.cs index ea92d71cd..e40fb773d 100644 --- a/src/NzbDrone.Core/ThingiProvider/IProvider.cs +++ b/src/NzbDrone.Core/ThingiProvider/IProvider.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using FluentValidation.Results; @@ -11,6 +11,7 @@ namespace NzbDrone.Core.ThingiProvider ProviderMessage Message { get; } IEnumerable DefaultDefinitions { get; } ProviderDefinition Definition { get; set; } + ValidationResult Test(); object RequestAction(string stage, IDictionary query); }