From 5fc4cd29a3e4486f3d7db43837fad7e3cd93ba20 Mon Sep 17 00:00:00 2001 From: Keivan Beigi Date: Fri, 13 Sep 2013 17:10:39 -0700 Subject: [PATCH] added torrent feature toggle. dropped NzbClub. --- .../IndexerTests/IndexerServiceFixture.cs | 2 - .../IndexerIntegrationTests.cs | 12 --- .../Configuration/ConfigFileProvider.cs | 23 ++++-- NzbDrone.Core/Indexers/Eztv/Eztv.cs | 8 ++ NzbDrone.Core/Indexers/IIndexer.cs | 1 + NzbDrone.Core/Indexers/IndexerBase.cs | 8 ++ NzbDrone.Core/Indexers/IndexerService.cs | 16 +++- NzbDrone.Core/Indexers/Newznab/Newznab.cs | 8 ++ NzbDrone.Core/Indexers/NzbClub/NzbClub.cs | 74 ------------------- .../Indexers/NzbClub/NzbClubParser.cs | 73 ------------------ .../Indexers/Omgwtfnzbs/Omgwtfnzbs.cs | 8 ++ NzbDrone.Core/Indexers/RssParserBase.cs | 2 +- NzbDrone.Core/Indexers/Wombles/Wombles.cs | 8 ++ NzbDrone.Core/NzbDrone.Core.csproj | 2 - 14 files changed, 71 insertions(+), 174 deletions(-) delete mode 100644 NzbDrone.Core/Indexers/NzbClub/NzbClub.cs delete mode 100644 NzbDrone.Core/Indexers/NzbClub/NzbClubParser.cs diff --git a/NzbDrone.Core.Test/IndexerTests/IndexerServiceFixture.cs b/NzbDrone.Core.Test/IndexerTests/IndexerServiceFixture.cs index 3e6239823..2de52fb5f 100644 --- a/NzbDrone.Core.Test/IndexerTests/IndexerServiceFixture.cs +++ b/NzbDrone.Core.Test/IndexerTests/IndexerServiceFixture.cs @@ -6,7 +6,6 @@ using Moq; using NUnit.Framework; using NzbDrone.Core.Indexers; using NzbDrone.Core.Indexers.Newznab; -using NzbDrone.Core.Indexers.NzbClub; using NzbDrone.Core.Indexers.Omgwtfnzbs; using NzbDrone.Core.Indexers.Wombles; using NzbDrone.Core.Lifecycle; @@ -24,7 +23,6 @@ namespace NzbDrone.Core.Test.IndexerTests _indexers = new List(); _indexers.Add(new Newznab()); - _indexers.Add(new NzbClub()); _indexers.Add(new Omgwtfnzbs()); _indexers.Add(new Wombles()); diff --git a/NzbDrone.Core.Test/IndexerTests/IntegrationTests/IndexerIntegrationTests.cs b/NzbDrone.Core.Test/IndexerTests/IntegrationTests/IndexerIntegrationTests.cs index 0a305d371..1be142824 100644 --- a/NzbDrone.Core.Test/IndexerTests/IntegrationTests/IndexerIntegrationTests.cs +++ b/NzbDrone.Core.Test/IndexerTests/IntegrationTests/IndexerIntegrationTests.cs @@ -3,7 +3,6 @@ using FluentAssertions; using NzbDrone.Core.Indexers; using NzbDrone.Core.Indexers.Eztv; using NzbDrone.Core.Indexers.Newznab; -using NzbDrone.Core.Indexers.NzbClub; using NzbDrone.Core.Indexers.Wombles; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Test.Framework; @@ -23,17 +22,6 @@ namespace NzbDrone.Core.Test.IndexerTests.IntegrationTests } - [Test] - [Explicit] - public void nzbclub_rss() - { - var indexer = new NzbClub(); - - var result = Subject.FetchRss(indexer); - - ValidateResult(result); - } - [Test] public void wombles_rss() { diff --git a/NzbDrone.Core/Configuration/ConfigFileProvider.cs b/NzbDrone.Core/Configuration/ConfigFileProvider.cs index 0676891cf..ee5793e95 100644 --- a/NzbDrone.Core/Configuration/ConfigFileProvider.cs +++ b/NzbDrone.Core/Configuration/ConfigFileProvider.cs @@ -26,13 +26,13 @@ namespace NzbDrone.Core.Configuration string Password { get; } string LogLevel { get; } string Branch { get; } + bool Torrent { get; } } public class ConfigFileProvider : IConfigFileProvider { private const string CONFIG_ELEMENT_NAME = "Config"; - private readonly IAppFolderInfo _appFolderInfo; private readonly IMessageAggregator _messageAggregator; private readonly ICached _cache; @@ -40,10 +40,9 @@ namespace NzbDrone.Core.Configuration public ConfigFileProvider(IAppFolderInfo appFolderInfo, ICacheManger cacheManger, IMessageAggregator messageAggregator) { - _appFolderInfo = appFolderInfo; _cache = cacheManger.GetCache(GetType()); _messageAggregator = messageAggregator; - _configFile = _appFolderInfo.GetConfigPath(); + _configFile = appFolderInfo.GetConfigPath(); } public Dictionary GetConfigDictionary() @@ -96,6 +95,11 @@ namespace NzbDrone.Core.Configuration get { return GetValueBoolean("LaunchBrowser", true); } } + public bool Torrent + { + get { return GetValueBoolean("Torrent", false, persist: false); } + } + public bool AuthenticationEnabled { get { return GetValueBoolean("AuthenticationEnabled", false); } @@ -126,9 +130,9 @@ namespace NzbDrone.Core.Configuration return Convert.ToInt32(GetValue(key, defaultValue)); } - public bool GetValueBoolean(string key, bool defaultValue) + public bool GetValueBoolean(string key, bool defaultValue, bool persist = true) { - return Convert.ToBoolean(GetValue(key, defaultValue)); + return Convert.ToBoolean(GetValue(key, defaultValue, persist)); } public T GetValueEnum(string key, T defaultValue) @@ -136,7 +140,7 @@ namespace NzbDrone.Core.Configuration return (T)Enum.Parse(typeof(T), GetValue(key, defaultValue), true); } - public string GetValue(string key, object defaultValue) + public string GetValue(string key, object defaultValue, bool persist = true) { return _cache.Get(key, () => { @@ -153,7 +157,10 @@ namespace NzbDrone.Core.Configuration return valueHolder.First().Value; //Save the value - SetValue(key, defaultValue); + if (persist) + { + SetValue(key, defaultValue); + } //return the default value return defaultValue.ToString(); @@ -233,7 +240,7 @@ namespace NzbDrone.Core.Configuration catch (XmlException ex) { - throw new InvalidConfigFileException("config.xml is invalid, please see the wiki for steps to resolve this issue.", ex); + throw new InvalidConfigFileException(_configFile + " is invalid, please see the http://wiki.nzbdrone.com for steps to resolve this issue.", ex); } } diff --git a/NzbDrone.Core/Indexers/Eztv/Eztv.cs b/NzbDrone.Core/Indexers/Eztv/Eztv.cs index eb59e0fb2..541f3a078 100644 --- a/NzbDrone.Core/Indexers/Eztv/Eztv.cs +++ b/NzbDrone.Core/Indexers/Eztv/Eztv.cs @@ -10,6 +10,14 @@ namespace NzbDrone.Core.Indexers.Eztv get { return "Eztv"; } } + public override IndexerKind Kind + { + get + { + return IndexerKind.Torrent; + } + } + public override bool EnableByDefault { get { return false; } diff --git a/NzbDrone.Core/Indexers/IIndexer.cs b/NzbDrone.Core/Indexers/IIndexer.cs index 6419ea1c5..a681ae3df 100644 --- a/NzbDrone.Core/Indexers/IIndexer.cs +++ b/NzbDrone.Core/Indexers/IIndexer.cs @@ -16,6 +16,7 @@ namespace NzbDrone.Core.Indexers IEnumerable RecentFeed { get; } IParseFeed Parser { get; } + IndexerKind Kind { get; } IEnumerable GetEpisodeSearchUrls(string seriesTitle, int tvRageId, int seasonNumber, int episodeNumber); IEnumerable GetDailyEpisodeSearchUrls(string seriesTitle, int tvRageId, DateTime date); diff --git a/NzbDrone.Core/Indexers/IndexerBase.cs b/NzbDrone.Core/Indexers/IndexerBase.cs index bd4d24578..6f544a2be 100644 --- a/NzbDrone.Core/Indexers/IndexerBase.cs +++ b/NzbDrone.Core/Indexers/IndexerBase.cs @@ -7,6 +7,8 @@ namespace NzbDrone.Core.Indexers { public abstract string Name { get; } + public abstract IndexerKind Kind { get; } + public virtual bool EnableByDefault { get { return true; } } public IndexerDefinition InstanceDefinition { get; set; } @@ -32,4 +34,10 @@ namespace NzbDrone.Core.Indexers public abstract IEnumerable GetDailyEpisodeSearchUrls(string seriesTitle, int tvRageId, DateTime date); public abstract IEnumerable GetSeasonSearchUrls(string seriesTitle, int tvRageId, int seasonNumber, int offset); } + + public enum IndexerKind + { + Usenet, + Torrent + } } \ No newline at end of file diff --git a/NzbDrone.Core/Indexers/IndexerService.cs b/NzbDrone.Core/Indexers/IndexerService.cs index 032c08083..f3261eb3c 100644 --- a/NzbDrone.Core/Indexers/IndexerService.cs +++ b/NzbDrone.Core/Indexers/IndexerService.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using NLog; using NzbDrone.Common.Serializer; +using NzbDrone.Core.Configuration; using NzbDrone.Core.Indexers.Newznab; using NzbDrone.Core.Lifecycle; using NzbDrone.Core.Messaging; @@ -35,15 +36,26 @@ namespace NzbDrone.Core.Indexers public class IndexerService : IIndexerService, IHandle { private readonly IIndexerRepository _indexerRepository; + private readonly IConfigFileProvider _configFileProvider; private readonly Logger _logger; private readonly List _indexers; - public IndexerService(IIndexerRepository indexerRepository, IEnumerable indexers, Logger logger) + public IndexerService(IIndexerRepository indexerRepository, IEnumerable indexers, IConfigFileProvider configFileProvider, Logger logger) { _indexerRepository = indexerRepository; + _configFileProvider = configFileProvider; _logger = logger; - _indexers = indexers.ToList(); + + + if (!configFileProvider.Torrent) + { + _indexers = indexers.Where(c => c.Kind != IndexerKind.Torrent).ToList(); + } + else + { + _indexers = indexers.ToList(); + } } public List All() diff --git a/NzbDrone.Core/Indexers/Newznab/Newznab.cs b/NzbDrone.Core/Indexers/Newznab/Newznab.cs index fba599939..4341c22f7 100644 --- a/NzbDrone.Core/Indexers/Newznab/Newznab.cs +++ b/NzbDrone.Core/Indexers/Newznab/Newznab.cs @@ -123,6 +123,14 @@ namespace NzbDrone.Core.Indexers.Newznab } } + public override IndexerKind Kind + { + get + { + return IndexerKind.Usenet; + } + } + private static string NewsnabifyTitle(string title) { diff --git a/NzbDrone.Core/Indexers/NzbClub/NzbClub.cs b/NzbDrone.Core/Indexers/NzbClub/NzbClub.cs deleted file mode 100644 index cb2bc8a5f..000000000 --- a/NzbDrone.Core/Indexers/NzbClub/NzbClub.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace NzbDrone.Core.Indexers.NzbClub -{ - public class NzbClub : IndexerBase - { - public override string Name - { - get { return "NzbClub"; } - } - - public override bool EnableByDefault - { - get { return false; } - } - - public override IParseFeed Parser - { - get - { - return new NzbClubParser(); - } - } - - public override IEnumerable RecentFeed - { - get - { - return new[] - { - String.Format("http://www.nzbclub.com/nzbfeed.aspx?ig=2&gid=102952&st=1&ns=1&q=%23a.b.teevee"), - String.Format("http://www.nzbclub.com/nzbfeed.aspx?ig=2&gid=5542&st=1&ns=1&q=") - }; - } - } - - public override IEnumerable GetEpisodeSearchUrls(string seriesTitle, int tvRageId, int seasonNumber, int episodeNumber) - { - var searchUrls = new List(); - - foreach (var url in RecentFeed) - { - searchUrls.Add(String.Format("{0}+{1}+s{2:00}e{3:00}", url, seriesTitle, seasonNumber, episodeNumber)); - } - - return searchUrls; - } - - public override IEnumerable GetSeasonSearchUrls(string seriesTitle, int tvRageId, int seasonNumber, int offset) - { - var searchUrls = new List(); - - foreach (var url in RecentFeed) - { - searchUrls.Add(String.Format("{0}+{1}+s{2:00}", url, seriesTitle, seasonNumber)); - } - - return searchUrls; - } - - public override IEnumerable GetDailyEpisodeSearchUrls(string seriesTitle, int tvRageId, DateTime date) - { - var searchUrls = new List(); - - foreach (var url in RecentFeed) - { - searchUrls.Add(String.Format("{0}+{1}+{2:yyyy MM dd}", url, seriesTitle, date)); - } - - return searchUrls; - } - } -} \ No newline at end of file diff --git a/NzbDrone.Core/Indexers/NzbClub/NzbClubParser.cs b/NzbDrone.Core/Indexers/NzbClub/NzbClubParser.cs deleted file mode 100644 index e88c48259..000000000 --- a/NzbDrone.Core/Indexers/NzbClub/NzbClubParser.cs +++ /dev/null @@ -1,73 +0,0 @@ -using System; -using System.Linq; -using System.Text.RegularExpressions; -using System.Xml.Linq; - -namespace NzbDrone.Core.Indexers.NzbClub -{ - public class NzbClubParser : RssParserBase - { - - private static readonly Regex SizeRegex = new Regex(@"(?:Size:)\s(?\d+.\d+\s[g|m]i?[b])", RegexOptions.Compiled | RegexOptions.IgnoreCase); - - - protected override long GetSize(XElement item) - { - var match = SizeRegex.Match(item.Description()); - - if (match.Success && match.Groups["size"].Success) - { - return ParseSize(match.Groups["size"].Value); - } - - return 0; - } - - protected override string GetTitle(XElement item) - { - var title = ParseHeader(item.Title()); - - if (String.IsNullOrWhiteSpace(title)) - return item.Title(); - - return title; - } - - private static readonly Regex[] HeaderRegex = new[] - { - new Regex(@"(?:\[.+\]\-\[.+\]\-\[.+\]\-\[)(?.+)(?:\]\-.+)", - RegexOptions.IgnoreCase), - - new Regex(@"(?:\[.+\]\W+\[.+\]\W+\[.+\]\W+\"")(?.+)(?:\"".+)", - RegexOptions.IgnoreCase), - - new Regex(@"(?:\[)(?.+)(?:\]\-.+)", - RegexOptions.IgnoreCase), - }; - - private static string ParseHeader(string header) - { - foreach (var regex in HeaderRegex) - { - var match = regex.Matches(header); - - if (match.Count != 0) - return match[0].Groups["nzbTitle"].Value.Trim(); - } - - return header; - } - - protected override string GetNzbInfoUrl(XElement item) - { - return item.Links().First(); - } - - protected override string GetNzbUrl(XElement item) - { - var enclosure = item.Element("enclosure"); - - return enclosure.Attribute("url").Value; - } - } -} diff --git a/NzbDrone.Core/Indexers/Omgwtfnzbs/Omgwtfnzbs.cs b/NzbDrone.Core/Indexers/Omgwtfnzbs/Omgwtfnzbs.cs index 8d8e9b4a9..15f6dbbe5 100644 --- a/NzbDrone.Core/Indexers/Omgwtfnzbs/Omgwtfnzbs.cs +++ b/NzbDrone.Core/Indexers/Omgwtfnzbs/Omgwtfnzbs.cs @@ -10,6 +10,14 @@ namespace NzbDrone.Core.Indexers.Omgwtfnzbs get { return "omgwtfnzbs"; } } + public override IndexerKind Kind + { + get + { + return IndexerKind.Usenet; + } + } + public override IParseFeed Parser { get diff --git a/NzbDrone.Core/Indexers/RssParserBase.cs b/NzbDrone.Core/Indexers/RssParserBase.cs index 247f2eb50..485bc0140 100644 --- a/NzbDrone.Core/Indexers/RssParserBase.cs +++ b/NzbDrone.Core/Indexers/RssParserBase.cs @@ -15,7 +15,7 @@ namespace NzbDrone.Core.Indexers { public abstract class RssParserBase : IParseFeed { - private Logger _logger; + private readonly Logger _logger; protected virtual ReleaseInfo CreateNewReleaseInfo() { diff --git a/NzbDrone.Core/Indexers/Wombles/Wombles.cs b/NzbDrone.Core/Indexers/Wombles/Wombles.cs index adff820ec..95cd559de 100644 --- a/NzbDrone.Core/Indexers/Wombles/Wombles.cs +++ b/NzbDrone.Core/Indexers/Wombles/Wombles.cs @@ -10,6 +10,14 @@ namespace NzbDrone.Core.Indexers.Wombles get { return "WomblesIndex"; } } + public override IndexerKind Kind + { + get + { + return IndexerKind.Usenet; + } + } + public override IParseFeed Parser { get diff --git a/NzbDrone.Core/NzbDrone.Core.csproj b/NzbDrone.Core/NzbDrone.Core.csproj index 47752dff6..bcba2a519 100644 --- a/NzbDrone.Core/NzbDrone.Core.csproj +++ b/NzbDrone.Core/NzbDrone.Core.csproj @@ -307,8 +307,6 @@ - -