mirror of
https://github.com/Sonarr/Sonarr.git
synced 2024-12-16 11:37:58 +02:00
fixed server side indexer issue
This commit is contained in:
parent
370ab86dca
commit
1877f70403
@ -1,6 +1,7 @@
|
|||||||
using FluentAssertions;
|
using FluentAssertions;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using NzbDrone.Api.ClientSchema;
|
using NzbDrone.Api.ClientSchema;
|
||||||
|
using NzbDrone.Core.Annotations;
|
||||||
using NzbDrone.Test.Common;
|
using NzbDrone.Test.Common;
|
||||||
|
|
||||||
namespace NzbDrone.Api.Test.ClientSchemaTests
|
namespace NzbDrone.Api.Test.ClientSchemaTests
|
||||||
@ -41,5 +42,7 @@ public class TestModel
|
|||||||
|
|
||||||
[FieldDefinition(1, Label = "Last Name", HelpText = "Your Last Name")]
|
[FieldDefinition(1, Label = "Last Name", HelpText = "Your Last Name")]
|
||||||
public string LastName { get; set; }
|
public string LastName { get; set; }
|
||||||
|
|
||||||
|
public string Other { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,17 +2,5 @@
|
|||||||
|
|
||||||
namespace NzbDrone.Api.ClientSchema
|
namespace NzbDrone.Api.ClientSchema
|
||||||
{
|
{
|
||||||
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
|
|
||||||
public class FieldDefinitionAttribute : Attribute
|
|
||||||
{
|
|
||||||
|
|
||||||
public FieldDefinitionAttribute(int order)
|
|
||||||
{
|
|
||||||
Order = order;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Order { get; private set; }
|
|
||||||
public string Label { get; set; }
|
|
||||||
public string HelpText { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,5 +1,6 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using NzbDrone.Common.Reflection;
|
using NzbDrone.Common.Reflection;
|
||||||
|
using NzbDrone.Core.Annotations;
|
||||||
|
|
||||||
namespace NzbDrone.Api.ClientSchema
|
namespace NzbDrone.Api.ClientSchema
|
||||||
{
|
{
|
||||||
@ -13,24 +14,28 @@ public static List<Field> GenerateSchema(object model)
|
|||||||
|
|
||||||
foreach (var propertyInfo in properties)
|
foreach (var propertyInfo in properties)
|
||||||
{
|
{
|
||||||
var fieldAttribute = propertyInfo.GetAttribute<FieldDefinitionAttribute>();
|
var fieldAttribute = propertyInfo.GetAttribute<FieldDefinitionAttribute>(false);
|
||||||
|
|
||||||
var field = new Field()
|
if (fieldAttribute != null)
|
||||||
{
|
|
||||||
Name = propertyInfo.Name,
|
|
||||||
Label = fieldAttribute.Label,
|
|
||||||
HelpText = fieldAttribute.HelpText,
|
|
||||||
Order = fieldAttribute.Order,
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
var value = propertyInfo.GetValue(model, null);
|
|
||||||
if (value != null)
|
|
||||||
{
|
{
|
||||||
field.Value = value.ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
result.Add(field);
|
var field = new Field()
|
||||||
|
{
|
||||||
|
Name = propertyInfo.Name,
|
||||||
|
Label = fieldAttribute.Label,
|
||||||
|
HelpText = fieldAttribute.HelpText,
|
||||||
|
Order = fieldAttribute.Order,
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
var value = propertyInfo.GetValue(model, null);
|
||||||
|
if (value != null)
|
||||||
|
{
|
||||||
|
field.Value = value.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
result.Add(field);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -15,7 +15,7 @@ public string Map(string resourceUrl)
|
|||||||
path = path.Trim(Path.DirectorySeparatorChar).ToLower();
|
path = path.Trim(Path.DirectorySeparatorChar).ToLower();
|
||||||
|
|
||||||
|
|
||||||
return Path.Combine("ui", path);
|
return Path.Combine(Directory.GetCurrentDirectory(), "ui", path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -21,11 +21,13 @@ private List<IndexerResource> GetAll()
|
|||||||
|
|
||||||
var result = new List<IndexerResource>(indexers.Count);
|
var result = new List<IndexerResource>(indexers.Count);
|
||||||
|
|
||||||
foreach (var indexerDefinition in indexers)
|
foreach (var indexer in indexers)
|
||||||
{
|
{
|
||||||
var resource = new IndexerResource();
|
var indexerResource = new IndexerResource();
|
||||||
resource.InjectFrom(indexerDefinition);
|
indexerResource.InjectFrom(indexer);
|
||||||
resource.Fields = SchemaBuilder.GenerateSchema(indexerDefinition.Settings);
|
indexerResource.Fields = SchemaBuilder.GenerateSchema(indexer.Settings);
|
||||||
|
|
||||||
|
result.Add(indexerResource);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -23,38 +23,8 @@
|
|||||||
<NamedTestSelector>
|
<NamedTestSelector>
|
||||||
<TestName>NzbDrone.Common.Test.EnviromentProviderTest.ApplicationPath_should_find_root_in_current_folder</TestName>
|
<TestName>NzbDrone.Common.Test.EnviromentProviderTest.ApplicationPath_should_find_root_in_current_folder</TestName>
|
||||||
</NamedTestSelector>
|
</NamedTestSelector>
|
||||||
<NamedTestSelector>
|
|
||||||
<TestName>NzbDrone.Common.Test.ProcessProviderTests.Should_be_able_to_kill_procces</TestName>
|
|
||||||
</NamedTestSelector>
|
|
||||||
<NamedTestSelector>
|
|
||||||
<TestName>NzbDrone.Common.Test.ProcessProviderTests.Should_be_able_to_start_process</TestName>
|
|
||||||
</NamedTestSelector>
|
|
||||||
<NamedTestSelector>
|
|
||||||
<TestName>NzbDrone.Common.Test.ServiceProviderTests.Service_should_be_installed_and_then_uninstalled</TestName>
|
|
||||||
</NamedTestSelector>
|
|
||||||
<NamedTestSelector>
|
|
||||||
<TestName>NzbDrone.Common.Test.ServiceProviderTests.Should_be_able_to_start_and_stop_service</TestName>
|
|
||||||
</NamedTestSelector>
|
|
||||||
<RegexTestSelector>
|
|
||||||
<RegularExpression>NzbDrone\.Common\.Test\.ConfigFileProviderTest\..*</RegularExpression>
|
|
||||||
</RegexTestSelector>
|
|
||||||
<RegexTestSelector>
|
|
||||||
<RegularExpression>NzbDrone\.Common\.Test\.EnvironmentProviderTest\..*</RegularExpression>
|
|
||||||
</RegexTestSelector>
|
|
||||||
<RegexTestSelector>
|
<RegexTestSelector>
|
||||||
<RegularExpression>NzbDrone\.Common\.Test\.EventingTests\.ServiceNameFixture\..*</RegularExpression>
|
<RegularExpression>NzbDrone\.Common\.Test\.EventingTests\.ServiceNameFixture\..*</RegularExpression>
|
||||||
</RegexTestSelector>
|
</RegexTestSelector>
|
||||||
<RegexTestSelector>
|
|
||||||
<RegularExpression>NzbDrone\.Common\.Test\.ProcessProviderTests\..*</RegularExpression>
|
|
||||||
</RegexTestSelector>
|
|
||||||
<RegexTestSelector>
|
|
||||||
<RegularExpression>NzbDrone\.Common\.Test\.ReportingService_ReportParseError_Fixture\..*</RegularExpression>
|
|
||||||
</RegexTestSelector>
|
|
||||||
<RegexTestSelector>
|
|
||||||
<RegularExpression>NzbDrone\.Common\.Test\.ServiceProviderTests\..*</RegularExpression>
|
|
||||||
</RegexTestSelector>
|
|
||||||
<RegexTestSelector>
|
|
||||||
<RegularExpression>NzbDrone\.Common\.Test\.WebClientTests\..*</RegularExpression>
|
|
||||||
</RegexTestSelector>
|
|
||||||
</IgnoredTests>
|
</IgnoredTests>
|
||||||
</ProjectConfiguration>
|
</ProjectConfiguration>
|
17
NzbDrone.Core/Annotations/FieldDefinitionAttribute.cs
Normal file
17
NzbDrone.Core/Annotations/FieldDefinitionAttribute.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Annotations
|
||||||
|
{
|
||||||
|
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
|
||||||
|
public class FieldDefinitionAttribute : Attribute
|
||||||
|
{
|
||||||
|
public FieldDefinitionAttribute(int order)
|
||||||
|
{
|
||||||
|
Order = order;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Order { get; private set; }
|
||||||
|
public string Label { get; set; }
|
||||||
|
public string HelpText { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -1,10 +1,14 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using NzbDrone.Core.Annotations;
|
||||||
|
|
||||||
namespace NzbDrone.Core.Indexers.Newznab
|
namespace NzbDrone.Core.Indexers.Newznab
|
||||||
{
|
{
|
||||||
public class NewznabSettings : IIndexerSetting
|
public class NewznabSettings : IIndexerSetting
|
||||||
{
|
{
|
||||||
|
[FieldDefinition(0, Label = "URL", HelpText = "NewzNab Host Url")]
|
||||||
public String Url { get; set; }
|
public String Url { get; set; }
|
||||||
|
|
||||||
|
[FieldDefinition(1, Label = "API Key", HelpText = "Your API Key")]
|
||||||
public String ApiKey { get; set; }
|
public String ApiKey { get; set; }
|
||||||
|
|
||||||
public bool IsValid
|
public bool IsValid
|
||||||
|
@ -1,12 +1,16 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using NzbDrone.Core.Annotations;
|
||||||
|
|
||||||
namespace NzbDrone.Core.Indexers.NzbsRUs
|
namespace NzbDrone.Core.Indexers.NzbsRUs
|
||||||
{
|
{
|
||||||
public class NzbsrusSetting : IIndexerSetting
|
public class NzbsrusSetting : IIndexerSetting
|
||||||
{
|
{
|
||||||
|
[FieldDefinition(0, Label = "UID", HelpText = "Your NzbsRus User ID")]
|
||||||
public String Uid { get; set; }
|
public String Uid { get; set; }
|
||||||
|
|
||||||
|
[FieldDefinition(1, Label = "Hash", HelpText = "Your API Hash Key")]
|
||||||
public String Hash { get; set; }
|
public String Hash { get; set; }
|
||||||
|
|
||||||
public bool IsValid
|
public bool IsValid
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -1,10 +1,14 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using NzbDrone.Core.Annotations;
|
||||||
|
|
||||||
namespace NzbDrone.Core.Indexers.Omgwtfnzbs
|
namespace NzbDrone.Core.Indexers.Omgwtfnzbs
|
||||||
{
|
{
|
||||||
public class OmgwtfnzbsSetting : IIndexerSetting
|
public class OmgwtfnzbsSetting : IIndexerSetting
|
||||||
{
|
{
|
||||||
|
[FieldDefinition(0, Label = "Username", HelpText = "Your Username")]
|
||||||
public String Username { get; set; }
|
public String Username { get; set; }
|
||||||
|
|
||||||
|
[FieldDefinition(1, Label = "API Key", HelpText = "Your API Key")]
|
||||||
public String ApiKey { get; set; }
|
public String ApiKey { get; set; }
|
||||||
|
|
||||||
public bool IsValid
|
public bool IsValid
|
||||||
|
@ -176,6 +176,7 @@
|
|||||||
<Compile Include="..\NzbDrone.Common\Properties\SharedAssemblyInfo.cs">
|
<Compile Include="..\NzbDrone.Common\Properties\SharedAssemblyInfo.cs">
|
||||||
<Link>Properties\SharedAssemblyInfo.cs</Link>
|
<Link>Properties\SharedAssemblyInfo.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Annotations\FieldDefinitionAttribute.cs" />
|
||||||
<Compile Include="Configuration\Config.cs" />
|
<Compile Include="Configuration\Config.cs" />
|
||||||
<Compile Include="Configuration\ConfigRepository.cs" />
|
<Compile Include="Configuration\ConfigRepository.cs" />
|
||||||
<Compile Include="Configuration\IConfigService.cs" />
|
<Compile Include="Configuration\IConfigService.cs" />
|
||||||
|
16
NzbDrone.Integration.Test/Client/IndexerClient.cs
Normal file
16
NzbDrone.Integration.Test/Client/IndexerClient.cs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
using NzbDrone.Api.Indexers;
|
||||||
|
using RestSharp;
|
||||||
|
|
||||||
|
namespace NzbDrone.Integration.Test.Client
|
||||||
|
{
|
||||||
|
public class IndexerClient : ClientBase<IndexerResource>
|
||||||
|
{
|
||||||
|
public IndexerClient(IRestClient restClient)
|
||||||
|
: base(restClient)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
22
NzbDrone.Integration.Test/IndexerIntegrationFixture.cs
Normal file
22
NzbDrone.Integration.Test/IndexerIntegrationFixture.cs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
using System.IO;
|
||||||
|
using FluentAssertions;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using NzbDrone.Api.RootFolders;
|
||||||
|
|
||||||
|
namespace NzbDrone.Integration.Test
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class IndexerIntegrationFixture : IntegrationTest
|
||||||
|
{
|
||||||
|
[Test]
|
||||||
|
public void should_have_built_in_indexer()
|
||||||
|
{
|
||||||
|
var indexers = Indexers.All();
|
||||||
|
|
||||||
|
|
||||||
|
indexers.Should().NotBeEmpty();
|
||||||
|
indexers.Should().NotContain(c => string.IsNullOrWhiteSpace(c.Name));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -7,6 +7,7 @@
|
|||||||
using Nancy.Hosting.Self;
|
using Nancy.Hosting.Self;
|
||||||
using NzbDrone.Api;
|
using NzbDrone.Api;
|
||||||
using NzbDrone.Api.Commands;
|
using NzbDrone.Api.Commands;
|
||||||
|
using NzbDrone.Api.Indexers;
|
||||||
using NzbDrone.Api.RootFolders;
|
using NzbDrone.Api.RootFolders;
|
||||||
using NzbDrone.Common;
|
using NzbDrone.Common;
|
||||||
using NzbDrone.Core.Datastore;
|
using NzbDrone.Core.Datastore;
|
||||||
@ -32,6 +33,7 @@ public abstract class IntegrationTest
|
|||||||
protected ClientBase<RootFolderResource> RootFolders;
|
protected ClientBase<RootFolderResource> RootFolders;
|
||||||
protected ClientBase<CommandResource> Commands;
|
protected ClientBase<CommandResource> Commands;
|
||||||
protected ReleaseClient Releases;
|
protected ReleaseClient Releases;
|
||||||
|
protected IndexerClient Indexers;
|
||||||
|
|
||||||
static IntegrationTest()
|
static IntegrationTest()
|
||||||
{
|
{
|
||||||
@ -89,6 +91,7 @@ public void SmokeTestSetup()
|
|||||||
Releases = new ReleaseClient(RestClient);
|
Releases = new ReleaseClient(RestClient);
|
||||||
RootFolders = new ClientBase<RootFolderResource>(RestClient);
|
RootFolders = new ClientBase<RootFolderResource>(RestClient);
|
||||||
Commands = new ClientBase<CommandResource>(RestClient);
|
Commands = new ClientBase<CommandResource>(RestClient);
|
||||||
|
Indexers = new IndexerClient(RestClient);
|
||||||
|
|
||||||
_host.Start();
|
_host.Start();
|
||||||
}
|
}
|
||||||
|
@ -68,9 +68,11 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Client\ClientBase.cs" />
|
<Compile Include="Client\ClientBase.cs" />
|
||||||
|
<Compile Include="Client\IndexerClient.cs" />
|
||||||
<Compile Include="Client\SeriesClient - Copy.cs" />
|
<Compile Include="Client\SeriesClient - Copy.cs" />
|
||||||
<Compile Include="Client\SeriesClient.cs" />
|
<Compile Include="Client\SeriesClient.cs" />
|
||||||
<Compile Include="CommandIntegerationTests.cs" />
|
<Compile Include="CommandIntegerationTests.cs" />
|
||||||
|
<Compile Include="IndexerIntegrationFixture.cs" />
|
||||||
<Compile Include="QualityProfileIntegrationTest.cs" />
|
<Compile Include="QualityProfileIntegrationTest.cs" />
|
||||||
<Compile Include="ReleaseIntegrationTest.cs" />
|
<Compile Include="ReleaseIntegrationTest.cs" />
|
||||||
<Compile Include="IntegrationTest.cs" />
|
<Compile Include="IntegrationTest.cs" />
|
||||||
|
Loading…
Reference in New Issue
Block a user