1
0
mirror of https://github.com/Radarr/Radarr.git synced 2024-11-04 10:02:40 +01:00

fixed nzbclub size parsing. Http timeout reduced from 100 to 20 seconds

This commit is contained in:
kay.one 2013-06-08 10:29:19 -07:00
parent 10cc388600
commit 5dc7e03b8d
8 changed files with 94 additions and 79 deletions

View File

@ -80,6 +80,7 @@ public Stream DownloadStream(string url, NetworkCredential credential = null)
{
var request = (HttpWebRequest)WebRequest.Create(url);
request.UserAgent = _userAgent;
request.Timeout = 20 * 1000;
request.Credentials = credential;
var response = request.GetResponse();

View File

@ -1,39 +1,52 @@
using FluentAssertions;
using System.Collections.Generic;
using FluentAssertions;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.Indexers.Newznab;
using NzbDrone.Core.Indexers.NzbClub;
using NzbDrone.Core.Indexers.Nzbx;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Test.Framework;
using NUnit.Framework;
using NzbDrone.Test.Common.Categories;
namespace NzbDrone.Core.Test.IndexerTests.IntegrationTests
{
[IntegrationTest]
public class IndexerIntegrationTests : CoreTest<FetchFeedService>
{
[SetUp]
public void SetUp()
{
UseRealHttp();
}
[Test]
public void nzbclub_rss()
{
UseRealHttp();
var indexer = new NzbClub();
var result = Subject.FetchRss(indexer);
result.Should().NotBeEmpty();
result.Should().OnlyContain(c => !string.IsNullOrWhiteSpace(c.Title));
result.Should().OnlyContain(c => !string.IsNullOrWhiteSpace(c.NzbUrl));
//TODO: uncomment these after moving to restsharp for rss
//result.Should().OnlyContain(c => !string.IsNullOrWhiteSpace(c.NzbInfoUrl));
//result.Should().OnlyContain(c => c.Size > 0);
ValidateResult(result);
}
[Test]
public void nzbx_rss()
{
var indexer = new Nzbx();
var result = Subject.FetchRss(indexer);
ValidateResult(result);
}
[Test]
[Explicit("needs newznab api key")]
public void nzbsorg_rss()
{
UseRealHttp();
var indexer = new Newznab();
indexer.Settings = new NewznabSettings
{
@ -55,5 +68,16 @@ public void nzbsorg_rss()
}
private void ValidateResult(IList<ReportInfo> reports)
{
reports.Should().NotBeEmpty();
reports.Should().OnlyContain(c => !string.IsNullOrWhiteSpace(c.Title));
reports.Should().OnlyContain(c => !string.IsNullOrWhiteSpace(c.NzbInfoUrl));
reports.Should().OnlyContain(c => !string.IsNullOrWhiteSpace(c.NzbUrl));
reports.Should().OnlyContain(c => c.Size > 0);
}
}
}

View File

@ -1,28 +0,0 @@
using FluentAssertions;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.Indexers.Nzbx;
using NzbDrone.Core.Test.Framework;
using NUnit.Framework;
namespace NzbDrone.Core.Test.IndexerTests.IntegrationTests
{
public class NzbxIntegrationTests : CoreTest<FetchFeedService>
{
[Test]
public void should_be_able_to_fetch_rss()
{
UseRealHttp();
var indexer = new Nzbx();
var result = Subject.FetchRss(indexer);
result.Should().NotBeEmpty();
result.Should().OnlyContain(c => !string.IsNullOrWhiteSpace(c.Title));
result.Should().OnlyContain(c => !string.IsNullOrWhiteSpace(c.NzbInfoUrl));
result.Should().OnlyContain(c => !string.IsNullOrWhiteSpace(c.NzbUrl));
result.Should().OnlyContain(c => c.Size > 0);
}
}
}

View File

@ -137,7 +137,6 @@
<Compile Include="IndexerSearchTests\SearchDefinitionFixture.cs" />
<Compile Include="IndexerTests\BasicRssParserFixture.cs" />
<Compile Include="IndexerTests\IndexerServiceFixture.cs" />
<Compile Include="IndexerTests\IntegrationTests\NzbxIntegrationTests.cs" />
<Compile Include="IndexerTests\IntegrationTests\IndexerIntegrationTests.cs" />
<Compile Include="IndexerTests\ParserTests\NzbxParserFixture.cs" />
<Compile Include="JobTests\JobRepositoryFixture.cs" />

View File

@ -1,18 +1,37 @@
using System;
using System.ServiceModel.Syndication;
using System.Text.RegularExpressions;
using NLog;
using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.Indexers.NzbClub
{
public class NzbClubParser : BasicRssParser
{
private static readonly Regex SizeRegex = new Regex(@"(?:Size:)\s(?<size>\d+.\d+\s[g|m]i?[b])", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private readonly Logger logger;
public NzbClubParser()
{
logger = LogManager.GetCurrentClassLogger();
}
protected override ReportInfo PostProcessor(SyndicationItem item, ReportInfo currentResult)
{
if (currentResult != null)
{
var sizeString = Regex.Match(item.Summary.Text, @"Size:\s\d+\s+\w+", RegexOptions.IgnoreCase | RegexOptions.Compiled).Value;
currentResult.Size = GetReportSize(sizeString);
var match = SizeRegex.Match(item.Summary.Text);
if (match.Success && match.Groups["size"].Success)
{
currentResult.Size = GetReportSize(match.Groups["size"].Value);
}
else
{
logger.Warn("Couldn't parse size from {0}", item.Summary.Text);
}
}
return currentResult;

View File

@ -3,22 +3,22 @@
<JSRemoteDebuggerConfigurationSettings>
<option name="engineId" value="chrome" />
<option name="fileUrl" value="http://localhost:8989" />
<mapping local-file="$PROJECT_DIR$/Calendar" url="http://localhost:8989/Calendar" />
<mapping local-file="$PROJECT_DIR$/MainMenuView.js" url="http://localhost:8989/MainMenuView.js" />
<mapping local-file="$PROJECT_DIR$/Settings" url="http://localhost:8989/Settings" />
<mapping local-file="$PROJECT_DIR$/Upcoming" url="http://localhost:8989/Upcoming" />
<mapping local-file="$PROJECT_DIR$/app.js" url="http://localhost:8989/app.js" />
<mapping local-file="$PROJECT_DIR$/Mixins" url="http://localhost:8989/Mixins" />
<mapping local-file="$PROJECT_DIR$/Missing" url="http://localhost:8989/Missing" />
<mapping local-file="$PROJECT_DIR$/Quality" url="http://localhost:8989/Quality" />
<mapping local-file="$PROJECT_DIR$/Config.js" url="http://localhost:8989/Config.js" />
<mapping local-file="$PROJECT_DIR$/Shared" url="http://localhost:8989/Shared" />
<mapping local-file="$PROJECT_DIR$/AddSeries" url="http://localhost:8989/AddSeries" />
<mapping local-file="$PROJECT_DIR$/HeaderView.js" url="http://localhost:8989/HeaderView.js" />
<mapping local-file="$PROJECT_DIR$" url="http://localhost:8989" />
<mapping local-file="$PROJECT_DIR$/Routing.js" url="http://localhost:8989/Routing.js" />
<mapping local-file="$PROJECT_DIR$/Controller.js" url="http://localhost:8989/Controller.js" />
<mapping local-file="$PROJECT_DIR$/Series" url="http://localhost:8989/Series" />
<mapping url="http://localhost:8989/Calendar" local-file="$PROJECT_DIR$/Calendar" />
<mapping url="http://localhost:8989/MainMenuView.js" local-file="$PROJECT_DIR$/MainMenuView.js" />
<mapping url="http://localhost:8989/Settings" local-file="$PROJECT_DIR$/Settings" />
<mapping url="http://localhost:8989/Upcoming" local-file="$PROJECT_DIR$/Upcoming" />
<mapping url="http://localhost:8989/app.js" local-file="$PROJECT_DIR$/app.js" />
<mapping url="http://localhost:8989/Mixins" local-file="$PROJECT_DIR$/Mixins" />
<mapping url="http://localhost:8989/Missing" local-file="$PROJECT_DIR$/Missing" />
<mapping url="http://localhost:8989/Quality" local-file="$PROJECT_DIR$/Quality" />
<mapping url="http://localhost:8989/Config.js" local-file="$PROJECT_DIR$/Config.js" />
<mapping url="http://localhost:8989/Shared" local-file="$PROJECT_DIR$/Shared" />
<mapping url="http://localhost:8989/AddSeries" local-file="$PROJECT_DIR$/AddSeries" />
<mapping url="http://localhost:8989/HeaderView.js" local-file="$PROJECT_DIR$/HeaderView.js" />
<mapping url="http://localhost:8989" local-file="$PROJECT_DIR$" />
<mapping url="http://localhost:8989/Routing.js" local-file="$PROJECT_DIR$/Routing.js" />
<mapping url="http://localhost:8989/Controller.js" local-file="$PROJECT_DIR$/Controller.js" />
<mapping url="http://localhost:8989/Series" local-file="$PROJECT_DIR$/Series" />
</JSRemoteDebuggerConfigurationSettings>
<RunnerSettings RunnerId="JavascriptDebugRunner" />
<ConfigurationWrapper RunnerId="JavascriptDebugRunner" />

View File

@ -3,22 +3,22 @@
<JSRemoteDebuggerConfigurationSettings>
<option name="engineId" value="firefox" />
<option name="fileUrl" value="http://localhost:8989" />
<mapping local-file="$PROJECT_DIR$/Calendar" url="http://localhost:8989/Calendar" />
<mapping local-file="$PROJECT_DIR$/MainMenuView.js" url="http://localhost:8989/MainMenuView.js" />
<mapping local-file="$PROJECT_DIR$/Settings" url="http://localhost:8989/Settings" />
<mapping local-file="$PROJECT_DIR$/Upcoming" url="http://localhost:8989/Upcoming" />
<mapping local-file="$PROJECT_DIR$/app.js" url="http://localhost:8989/app.js" />
<mapping local-file="$PROJECT_DIR$/Mixins" url="http://localhost:8989/Mixins" />
<mapping local-file="$PROJECT_DIR$/Missing" url="http://localhost:8989/Missing" />
<mapping local-file="$PROJECT_DIR$/Config.js" url="http://localhost:8989/Config.js" />
<mapping local-file="$PROJECT_DIR$/Quality" url="http://localhost:8989/Quality" />
<mapping local-file="$PROJECT_DIR$/AddSeries" url="http://localhost:8989/AddSeries" />
<mapping local-file="$PROJECT_DIR$/Shared" url="http://localhost:8989/Shared" />
<mapping local-file="$PROJECT_DIR$/HeaderView.js" url="http://localhost:8989/HeaderView.js" />
<mapping local-file="$PROJECT_DIR$" url="http://localhost:8989" />
<mapping local-file="$PROJECT_DIR$/Routing.js" url="http://localhost:8989/Routing.js" />
<mapping local-file="$PROJECT_DIR$/Controller.js" url="http://localhost:8989/Controller.js" />
<mapping local-file="$PROJECT_DIR$/Series" url="http://localhost:8989/Series" />
<mapping url="http://localhost:8989/Calendar" local-file="$PROJECT_DIR$/Calendar" />
<mapping url="http://localhost:8989/MainMenuView.js" local-file="$PROJECT_DIR$/MainMenuView.js" />
<mapping url="http://localhost:8989/Settings" local-file="$PROJECT_DIR$/Settings" />
<mapping url="http://localhost:8989/Upcoming" local-file="$PROJECT_DIR$/Upcoming" />
<mapping url="http://localhost:8989/app.js" local-file="$PROJECT_DIR$/app.js" />
<mapping url="http://localhost:8989/Mixins" local-file="$PROJECT_DIR$/Mixins" />
<mapping url="http://localhost:8989/Missing" local-file="$PROJECT_DIR$/Missing" />
<mapping url="http://localhost:8989/Config.js" local-file="$PROJECT_DIR$/Config.js" />
<mapping url="http://localhost:8989/Quality" local-file="$PROJECT_DIR$/Quality" />
<mapping url="http://localhost:8989/AddSeries" local-file="$PROJECT_DIR$/AddSeries" />
<mapping url="http://localhost:8989/Shared" local-file="$PROJECT_DIR$/Shared" />
<mapping url="http://localhost:8989/HeaderView.js" local-file="$PROJECT_DIR$/HeaderView.js" />
<mapping url="http://localhost:8989" local-file="$PROJECT_DIR$" />
<mapping url="http://localhost:8989/Routing.js" local-file="$PROJECT_DIR$/Routing.js" />
<mapping url="http://localhost:8989/Controller.js" local-file="$PROJECT_DIR$/Controller.js" />
<mapping url="http://localhost:8989/Series" local-file="$PROJECT_DIR$/Series" />
</JSRemoteDebuggerConfigurationSettings>
<RunnerSettings RunnerId="JavascriptDebugRunner" />
<ConfigurationWrapper RunnerId="JavascriptDebugRunner" />

View File

@ -19,10 +19,10 @@ define([
columns: [
{
name : 'age',
label : 'Age',
name : 'indexer',
label : 'Indexer',
sortable: true,
cell : Backgrid.IntegerCell
cell : Backgrid.StringCell
},
{
name : 'size',