Add support for Applications

This commit is contained in:
nitsua
2020-10-20 14:15:05 -04:00
committed by Qstick
parent 191d06deca
commit 47fbab02c5
37 changed files with 1607 additions and 3 deletions
@@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using FluentValidation.Results;
using NzbDrone.Core.ThingiProvider;
namespace NzbDrone.Core.Applications
{
public abstract class ApplicationBase<TSettings> : IApplications
where TSettings : IProviderConfig, new()
{
public abstract string Name { get; }
public Type ConfigContract => typeof(TSettings);
public virtual ProviderMessage Message => null;
public ProviderDefinition Definition { get; set; }
public abstract ValidationResult Test();
protected TSettings Settings => (TSettings)Definition.Settings;
public override string ToString()
{
return GetType().Name;
}
public virtual IEnumerable<ProviderDefinition> DefaultDefinitions
{
get
{
var config = (IProviderConfig)new TSettings();
yield return new ApplicationDefinition
{
Name = GetType().Name,
SyncLevel = ApplicationSyncLevel.AddOnly,
Implementation = GetType().Name,
Settings = config
};
}
}
public virtual object RequestAction(string action, IDictionary<string, string> query)
{
return null;
}
}
}