using System; using System.Collections.Generic; using FluentValidation; using NzbDrone.Core.Annotations; using NzbDrone.Core.Validation; namespace NzbDrone.Core.ImportLists.Sonarr { public class SonarrSettingsValidator : AbstractValidator { public SonarrSettingsValidator() { RuleFor(c => c.BaseUrl).ValidRootUrl(); RuleFor(c => c.ApiKey).NotEmpty(); } } public class SonarrSettings : ImportListSettingsBase { private static readonly SonarrSettingsValidator Validator = new (); public SonarrSettings() { ApiKey = ""; ProfileIds = Array.Empty(); LanguageProfileIds = Array.Empty(); TagIds = Array.Empty(); RootFolderPaths = Array.Empty(); } [FieldDefinition(0, Label = "ImportListsSonarrSettingsFullUrl", HelpText = "ImportListsSonarrSettingsFullUrlHelpText")] public override string BaseUrl { get; set; } = string.Empty; [FieldDefinition(1, Label = "ApiKey", HelpText = "ImportListsSonarrSettingsApiKeyHelpText")] public string ApiKey { get; set; } [FieldDefinition(2, Label = "ImportListsSonarrSettingsSyncSeasonMonitoring", HelpText = "ImportListsSonarrSettingsSyncSeasonMonitoringHelpText", Type = FieldType.Checkbox)] public bool SyncSeasonMonitoring { get; set; } [FieldDefinition(3, Type = FieldType.Select, SelectOptionsProviderAction = "getProfiles", Label = "QualityProfiles", HelpText = "ImportListsSonarrSettingsQualityProfilesHelpText")] public IEnumerable ProfileIds { get; set; } [FieldDefinition(4, Type = FieldType.Select, SelectOptionsProviderAction = "getTags", Label = "Tags", HelpText = "ImportListsSonarrSettingsTagsHelpText")] public IEnumerable TagIds { get; set; } [FieldDefinition(5, Type = FieldType.Select, SelectOptionsProviderAction = "getRootFolders", Label = "RootFolders", HelpText = "ImportListsSonarrSettingsRootFoldersHelpText")] public IEnumerable RootFolderPaths { get; set; } // TODO: Remove this eventually, no translation added as deprecated [FieldDefinition(6, Type = FieldType.Select, SelectOptionsProviderAction = "getLanguageProfiles", Label = "Language Profiles", HelpText = "Language Profiles from the source instance to import from")] public IEnumerable LanguageProfileIds { get; set; } public override NzbDroneValidationResult Validate() { return new NzbDroneValidationResult(Validator.Validate(this)); } } }