protected override bool IsValid(PropertyValidatorContext context) { var folder = context.PropertyValue.ToString(); foreach (var systemFolder in SystemFolders.GetSystemFolders()) { context.MessageFormatter.AppendArgument("systemFolder", systemFolder); if (systemFolder.PathEquals(folder)) { context.MessageFormatter.AppendArgument("relationship", "set to"); return(false); } if (systemFolder.IsParentPath(folder)) { context.MessageFormatter.AppendArgument("relationship", "child of"); return(false); } } return(true); }
public override ValidationResult Test() { var failures = new List <ValidationFailure>(); if (!_diskProvider.FileExists(Settings.Path)) { failures.Add(new NzbDroneValidationFailure("Path", "File does not exist")); } foreach (var systemFolder in SystemFolders.GetSystemFolders()) { if (systemFolder.IsParentPath(Settings.Path)) { failures.Add(new NzbDroneValidationFailure("Path", $"Must not be a descendant of '{systemFolder}'")); } } if (failures.Empty()) { try { var environmentVariables = new StringDictionary(); environmentVariables.Add("Sonarr_EventType", "Test"); var processOutput = ExecuteScript(environmentVariables); if (processOutput.ExitCode != 0) { failures.Add(new NzbDroneValidationFailure(string.Empty, $"Script exited with code: {processOutput.ExitCode}")); } } catch (Exception ex) { _logger.Error(ex); failures.Add(new NzbDroneValidationFailure(string.Empty, ex.Message)); } } return(new ValidationResult(failures)); }