From a8ca258ca460fd9789aebffd369a069b1417368c Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Tue, 25 Nov 2014 17:02:53 -0800 Subject: [PATCH] Fixed: Indexer testing Omg now has a preprocessor to catch authentication issues Indexer testing works again, instead of always being successful --- src/NzbDrone.Core/Indexers/HttpIndexerBase.cs | 14 ++++++++------ .../Indexers/Newznab/NewznabRssParser.cs | 1 - .../Indexers/Omgwtfnzbs/OmgwtfnzbsRssParser.cs | 12 ++++++++++++ 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs b/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs index 12c88623a..47982c12f 100644 --- a/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs +++ b/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Linq; using System.Net; -using System.Text; using FluentValidation.Results; using NLog; using NzbDrone.Common; @@ -186,9 +185,8 @@ namespace NzbDrone.Core.Indexers protected virtual IList FetchPage(IndexerRequest request, IParseIndexerResponse parser) { - var url = request.Url; - _logger.Debug("Downloading Feed " + request.Url); + var response = new IndexerResponse(request, _httpClient.Execute(request.HttpRequest)); return parser.ParseResponse(response).ToList(); @@ -201,12 +199,16 @@ namespace NzbDrone.Core.Indexers protected virtual ValidationFailure TestConnection() { - // TODO: This doesn't even work coz those exceptions get catched. try { - var releases = FetchRecent(); + var parser = GetParser(); + var generator = GetRequestGenerator(); + var releases = FetchPage(generator.GetRecentRequests().First().First(), parser); - if (releases.Any()) return null; + if (releases.Empty()) + { + return new ValidationFailure("Url", "No results were returned from your indexer, please check your settings."); + } } catch (ApiKeyException) { diff --git a/src/NzbDrone.Core/Indexers/Newznab/NewznabRssParser.cs b/src/NzbDrone.Core/Indexers/Newznab/NewznabRssParser.cs index 5d0043af3..ce460d945 100644 --- a/src/NzbDrone.Core/Indexers/Newznab/NewznabRssParser.cs +++ b/src/NzbDrone.Core/Indexers/Newznab/NewznabRssParser.cs @@ -45,7 +45,6 @@ namespace NzbDrone.Core.Indexers.Newznab return releaseInfo; } - protected override String GetInfoUrl(XElement item) { return item.TryGetValue("comments").TrimEnd("#comments"); diff --git a/src/NzbDrone.Core/Indexers/Omgwtfnzbs/OmgwtfnzbsRssParser.cs b/src/NzbDrone.Core/Indexers/Omgwtfnzbs/OmgwtfnzbsRssParser.cs index 96c0f90da..b6729241c 100644 --- a/src/NzbDrone.Core/Indexers/Omgwtfnzbs/OmgwtfnzbsRssParser.cs +++ b/src/NzbDrone.Core/Indexers/Omgwtfnzbs/OmgwtfnzbsRssParser.cs @@ -1,6 +1,8 @@ using System; +using System.Linq; using System.Text.RegularExpressions; using System.Xml.Linq; +using NzbDrone.Core.Indexers.Exceptions; namespace NzbDrone.Core.Indexers.Omgwtfnzbs { @@ -12,6 +14,16 @@ namespace NzbDrone.Core.Indexers.Omgwtfnzbs UseEnclosureLength = true; } + protected override bool PreProcess(IndexerResponse indexerResponse) + { + var xdoc = XDocument.Parse(indexerResponse.Content); + var notice = xdoc.Descendants("notice").FirstOrDefault(); + + if (notice == null) return true; + + throw new ApiKeyException(notice.Value); + } + protected override string GetInfoUrl(XElement item) { //Todo: Me thinks I need to parse details to get this...