mirror of https://github.com/Radarr/Radarr
30 lines
1.3 KiB
C#
30 lines
1.3 KiB
C#
using FluentValidation;
|
|
using FluentValidation.Results;
|
|
using NzbDrone.Common.Extensions;
|
|
using NzbDrone.Core.Download.Clients.RTorrent;
|
|
using NzbDrone.Core.Validation.Paths;
|
|
|
|
namespace NzbDrone.Core.Download.Clients.rTorrent
|
|
{
|
|
public interface IRTorrentDirectoryValidator
|
|
{
|
|
ValidationResult Validate(RTorrentSettings instance);
|
|
}
|
|
|
|
public class RTorrentDirectoryValidator : AbstractValidator<RTorrentSettings>, IRTorrentDirectoryValidator
|
|
{
|
|
public RTorrentDirectoryValidator(RootFolderValidator rootFolderValidator,
|
|
PathExistsValidator pathExistsValidator,
|
|
MappedNetworkDriveValidator mappedNetworkDriveValidator)
|
|
{
|
|
RuleFor(c => c.MovieDirectory).Cascade(CascadeMode.StopOnFirstFailure)
|
|
.IsValidPath()
|
|
.SetValidator(rootFolderValidator)
|
|
.SetValidator(mappedNetworkDriveValidator)
|
|
.SetValidator(pathExistsValidator)
|
|
.When(c => c.MovieDirectory.IsNotNullOrWhiteSpace())
|
|
.When(c => c.Host == "localhost" || c.Host == "127.0.0.1");
|
|
}
|
|
}
|
|
}
|