Fixed: Saving Newznab indexer when redirect was true

This commit is contained in:
Robin Dadswell 2025-08-05 10:26:27 +01:00 committed by Qstick
parent 063666a7c9
commit dadfb8d008
3 changed files with 19 additions and 7 deletions

View file

@ -208,12 +208,6 @@ public ValidationResult Test()
try try
{ {
// Ensure Redirect is true for Usenet protocols
if (Protocol == DownloadProtocol.Usenet || (SupportsRedirect && Redirect))
{
failures.Add(new ValidationFailure("Redirect", "Redirect must be enabled for Usenet indexers"));
}
Test(failures).GetAwaiter().GetResult(); Test(failures).GetAwaiter().GetResult();
} }
catch (Exception ex) catch (Exception ex)

View file

@ -1,4 +1,6 @@
using System.Collections.Generic;
using FluentValidation; using FluentValidation;
using FluentValidation.Results;
using NzbDrone.Core.Indexers; using NzbDrone.Core.Indexers;
using NzbDrone.Core.Validation; using NzbDrone.Core.Validation;
using NzbDrone.SignalR; using NzbDrone.SignalR;
@ -24,5 +26,21 @@ public IndexerController(IBroadcastSignalRMessage signalRBroadcaster,
SharedValidator.RuleFor(c => c.Priority).InclusiveBetween(1, 50); SharedValidator.RuleFor(c => c.Priority).InclusiveBetween(1, 50);
SharedValidator.RuleFor(c => c.DownloadClientId).SetValidator(downloadClientExistsValidator); SharedValidator.RuleFor(c => c.DownloadClientId).SetValidator(downloadClientExistsValidator);
} }
protected override void Validate(IndexerDefinition definition, bool includeWarnings)
{
var instance = _providerFactory.GetInstance(definition);
// Ensure Redirect is true for Usenet protocols
if (instance is { Protocol: DownloadProtocol.Usenet, SupportsRedirect: true } && definition is { Redirect: false })
{
throw new ValidationException(new List<ValidationFailure>
{
new("Redirect", "Redirect must be enabled for Usenet indexers")
});
}
base.Validate(definition, includeWarnings);
}
} }
} }

View file

@ -271,7 +271,7 @@ public void Handle(ProviderDeletedEvent<TProvider> message)
BroadcastResourceChange(ModelAction.Deleted, message.ProviderId); BroadcastResourceChange(ModelAction.Deleted, message.ProviderId);
} }
private void Validate(TProviderDefinition definition, bool includeWarnings) protected virtual void Validate(TProviderDefinition definition, bool includeWarnings)
{ {
var validationResult = definition.Settings.Validate(); var validationResult = definition.Settings.Validate();