Fixed: Indexer testing

Omg now has a preprocessor to catch authentication issues
Indexer testing works again, instead of always being successful
This commit is contained in:
Mark McDowall 2014-11-25 17:02:53 -08:00
parent 33ca71a745
commit a8ca258ca4
3 changed files with 20 additions and 7 deletions

View File

@ -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<ReleaseInfo> 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)
{

View File

@ -45,7 +45,6 @@ namespace NzbDrone.Core.Indexers.Newznab
return releaseInfo;
}
protected override String GetInfoUrl(XElement item)
{
return item.TryGetValue("comments").TrimEnd("#comments");

View File

@ -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...