handle empty rss response from indexers.
This commit is contained in:
parent
ef32431682
commit
a22cbfee2f
|
@ -4,6 +4,7 @@ using System.Globalization;
|
|||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Xml;
|
||||
using System.Xml.Linq;
|
||||
using NLog;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
|
@ -12,7 +13,7 @@ namespace NzbDrone.Core.Indexers
|
|||
{
|
||||
public interface IParseFeed
|
||||
{
|
||||
IEnumerable<ReportInfo> Process(Stream source, string url);
|
||||
IEnumerable<ReportInfo> Process(string xml, string url);
|
||||
}
|
||||
|
||||
public class BasicRssParser : IParseFeed
|
||||
|
@ -24,34 +25,37 @@ namespace NzbDrone.Core.Indexers
|
|||
_logger = LogManager.GetCurrentClassLogger();
|
||||
}
|
||||
|
||||
public IEnumerable<ReportInfo> Process(Stream source, string url)
|
||||
public IEnumerable<ReportInfo> Process(string xml, string url)
|
||||
{
|
||||
var document = XDocument.Load(source);
|
||||
var items = document.Descendants("item");
|
||||
|
||||
var result = new List<ReportInfo>();
|
||||
|
||||
foreach (var item in items)
|
||||
using (var xmlTextReader = new XmlTextReader(new StringReader(xml)) { DtdProcessing = DtdProcessing.Ignore })
|
||||
{
|
||||
try
|
||||
{
|
||||
var reportInfo = ParseFeedItem(item);
|
||||
if (reportInfo != null)
|
||||
{
|
||||
reportInfo.NzbUrl = GetNzbUrl(item);
|
||||
reportInfo.NzbInfoUrl = GetNzbInfoUrl(item);
|
||||
var document = XDocument.Load(xmlTextReader);
|
||||
var items = document.Descendants("item");
|
||||
|
||||
result.Add(reportInfo);
|
||||
var result = new List<ReportInfo>();
|
||||
|
||||
foreach (var item in items)
|
||||
{
|
||||
try
|
||||
{
|
||||
var reportInfo = ParseFeedItem(item);
|
||||
if (reportInfo != null)
|
||||
{
|
||||
reportInfo.NzbUrl = GetNzbUrl(item);
|
||||
reportInfo.NzbInfoUrl = GetNzbInfoUrl(item);
|
||||
|
||||
result.Add(reportInfo);
|
||||
}
|
||||
}
|
||||
catch (Exception itemEx)
|
||||
{
|
||||
itemEx.Data.Add("Item", item.Title());
|
||||
_logger.ErrorException("An error occurred while processing feed item from " + url, itemEx);
|
||||
}
|
||||
}
|
||||
catch (Exception itemEx)
|
||||
{
|
||||
itemEx.Data.Add("Item", item.Title());
|
||||
_logger.ErrorException("An error occurred while processing feed item from " + url, itemEx);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -106,8 +106,16 @@ namespace NzbDrone.Core.Indexers
|
|||
try
|
||||
{
|
||||
_logger.Trace("Downloading Feed " + url);
|
||||
var stream = _httpProvider.DownloadStream(url);
|
||||
result.AddRange(indexer.Parser.Process(stream, url));
|
||||
var xml = _httpProvider.DownloadString(url);
|
||||
if (!string.IsNullOrWhiteSpace(xml))
|
||||
{
|
||||
result.AddRange(indexer.Parser.Process(xml, url));
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.Warn("{0} returned empty response.", url);
|
||||
}
|
||||
|
||||
}
|
||||
catch (WebException webException)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue