From 734a36de065d035a82e81afc1d5791dd06125ca8 Mon Sep 17 00:00:00 2001 From: Leonardo Galli Date: Sat, 21 Jan 2017 18:42:58 +0100 Subject: [PATCH] Added some abstraction for settings. --- .../IMDbWatchList/IMDbWatchListSettings.cs | 25 ++---------- .../NetImport/NetImportBaseSettings.cs | 40 +++++++++++++++++++ src/NzbDrone.Core/NzbDrone.Core.csproj | 1 + 3 files changed, 45 insertions(+), 21 deletions(-) create mode 100644 src/NzbDrone.Core/NetImport/NetImportBaseSettings.cs diff --git a/src/NzbDrone.Core/NetImport/IMDbWatchList/IMDbWatchListSettings.cs b/src/NzbDrone.Core/NetImport/IMDbWatchList/IMDbWatchListSettings.cs index 3ca24faf3..6d10fa78c 100644 --- a/src/NzbDrone.Core/NetImport/IMDbWatchList/IMDbWatchListSettings.cs +++ b/src/NzbDrone.Core/NetImport/IMDbWatchList/IMDbWatchListSettings.cs @@ -6,17 +6,10 @@ using NzbDrone.Core.Validation; namespace NzbDrone.Core.NetImport.IMDbWatchList { - public class IMDbWatchListSettingsValidator : AbstractValidator - { - public IMDbWatchListSettingsValidator() - { - RuleFor(c => c.Link).NotEmpty(); - } - } - public class IMDbWatchListSettings : IProviderConfig + public class IMDbWatchListSettings : NetImportBaseSettings { - private static readonly IMDbWatchListSettingsValidator Validator = new IMDbWatchListSettingsValidator(); + //private const string helpLink = "https://imdb.com"; public IMDbWatchListSettings() { @@ -24,17 +17,7 @@ namespace NzbDrone.Core.NetImport.IMDbWatchList ProfileId = 1; } - [FieldDefinition(0, Label = "Watch List RSS link", HelpLink = "http://rss.imdb.com/list/")] - public string Link { get; set; } - - [FieldDefinition(1, Label = "Quality", Type = FieldType.Select, SelectOptions = typeof(Profile), HelpText = "Quality of all imported movies")] - public int ProfileId { get; set; } - - public bool IsValid => !string.IsNullOrWhiteSpace(Link); - - public NzbDroneValidationResult Validate() - { - return new NzbDroneValidationResult(Validator.Validate(this)); - } + [FieldDefinition(0, Label = "RSS Link", HelpText = "Link to the rss feed of movies.")] + public new string Link { get; set; } } } diff --git a/src/NzbDrone.Core/NetImport/NetImportBaseSettings.cs b/src/NzbDrone.Core/NetImport/NetImportBaseSettings.cs new file mode 100644 index 000000000..cdbbd0baf --- /dev/null +++ b/src/NzbDrone.Core/NetImport/NetImportBaseSettings.cs @@ -0,0 +1,40 @@ +using FluentValidation; +using NzbDrone.Core.Annotations; +using NzbDrone.Core.Profiles; +using NzbDrone.Core.ThingiProvider; +using NzbDrone.Core.Validation; + +namespace NzbDrone.Core.NetImport +{ + public class NetImportBaseSettingsValidator : AbstractValidator + { + public NetImportBaseSettingsValidator() + { + RuleFor(c => c.Link).NotEmpty(); + } + } + + public class NetImportBaseSettings : IProviderConfig + { + private static readonly NetImportBaseSettingsValidator Validator = new NetImportBaseSettingsValidator(); + + public NetImportBaseSettings() + { + Link = "http://rss.imdb.com/list/"; + ProfileId = 1; + } + + [FieldDefinition(0, Label = "Link", HelpText = "Link to the list of movies.")] + public string Link { get; set; } + + [FieldDefinition(1, Label = "Quality", Type = FieldType.Select, SelectOptions = typeof(Profile), HelpText = "Quality of all imported movies")] + public int ProfileId { get; set; } + + public bool IsValid => !string.IsNullOrWhiteSpace(Link); + + public NzbDroneValidationResult Validate() + { + return new NzbDroneValidationResult(Validator.Validate(this)); + } + } +} diff --git a/src/NzbDrone.Core/NzbDrone.Core.csproj b/src/NzbDrone.Core/NzbDrone.Core.csproj index d09f0a840..06402f783 100644 --- a/src/NzbDrone.Core/NzbDrone.Core.csproj +++ b/src/NzbDrone.Core/NzbDrone.Core.csproj @@ -126,6 +126,7 @@ +