2024-04-14 04:16:26 +00:00
using Equ ;
2019-06-14 03:54:25 +00:00
using FluentValidation ;
using NzbDrone.Core.Annotations ;
using NzbDrone.Core.Validation ;
namespace NzbDrone.Core.Indexers
{
public class SeedCriteriaSettingsValidator : AbstractValidator < SeedCriteriaSettings >
{
public SeedCriteriaSettingsValidator ( double seedRatioMinimum = 0.0 , int seedTimeMinimum = 0 , int seasonPackSeedTimeMinimum = 0 )
{
RuleFor ( c = > c . SeedRatio ) . GreaterThan ( 0.0 )
. When ( c = > c . SeedRatio . HasValue )
. AsWarning ( ) . WithMessage ( "Should be greater than zero" ) ;
RuleFor ( c = > c . SeedTime ) . GreaterThan ( 0 )
. When ( c = > c . SeedTime . HasValue )
. AsWarning ( ) . WithMessage ( "Should be greater than zero" ) ;
if ( seedRatioMinimum ! = 0.0 )
{
RuleFor ( c = > c . SeedRatio ) . GreaterThanOrEqualTo ( seedRatioMinimum )
. When ( c = > c . SeedRatio > 0.0 )
. AsWarning ( )
. WithMessage ( $"Under {seedRatioMinimum} leads to H&R" ) ;
}
if ( seedTimeMinimum ! = 0 )
{
RuleFor ( c = > c . SeedTime ) . GreaterThanOrEqualTo ( seedTimeMinimum )
. When ( c = > c . SeedTime > 0 )
. AsWarning ( )
. WithMessage ( $"Under {seedTimeMinimum} leads to H&R" ) ;
}
}
}
2024-04-14 04:16:26 +00:00
public class SeedCriteriaSettings : PropertywiseEquatable < SeedCriteriaSettings >
2019-06-14 03:54:25 +00:00
{
2022-09-22 16:48:29 +00:00
[FieldDefinition(0, Type = FieldType.Textbox, Label = "Seed Ratio", HelpText = "The ratio a torrent should reach before stopping, empty is download client's default. Ratio should be at least 1.0 and follow the indexers rules")]
2019-06-14 03:54:25 +00:00
public double? SeedRatio { get ; set ; }
[FieldDefinition(1, Type = FieldType.Number, Label = "Seed Time", Unit = "minutes", HelpText = "The time a torrent should be seeded before stopping, empty is download client's default", Advanced = true)]
public int? SeedTime { get ; set ; }
}
}