Files
git.stella-ops.org/src/__Libraries/StellaOps.DeltaVerdict/Validation/ValidationServiceCollectionExtensions.cs

71 lines
2.7 KiB
C#

// -----------------------------------------------------------------------------
// ValidationServiceCollectionExtensions.cs
// Sprint: SPRINT_20260118_031_LIB_input_pinning_trusted_vex_keys
// Task: TASK-031-006 - Implement Adversarial Input Validation
// Description: DI registration for adversarial validation services
// -----------------------------------------------------------------------------
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace StellaOps.DeltaVerdict.Validation;
/// <summary>
/// Extension methods for registering adversarial validation services.
/// </summary>
public static class ValidationServiceCollectionExtensions
{
/// <summary>
/// Adds adversarial input validation to the service collection.
/// </summary>
/// <param name="services">The service collection.</param>
/// <param name="configuration">Optional configuration.</param>
/// <returns>The service collection for chaining.</returns>
public static IServiceCollection AddAdversarialInputValidation(
this IServiceCollection services,
IConfiguration? configuration = null)
{
if (configuration != null)
{
services.Configure<AdversarialValidationPolicy>(
configuration.GetSection(AdversarialValidationPolicy.SectionName));
}
services.AddSingleton<IAdversarialInputValidator, AdversarialInputValidator>();
return services;
}
/// <summary>
/// Adds adversarial input validation with custom policy.
/// </summary>
/// <param name="services">The service collection.</param>
/// <param name="configurePolicy">Policy configuration delegate.</param>
/// <returns>The service collection for chaining.</returns>
public static IServiceCollection AddAdversarialInputValidation(
this IServiceCollection services,
Action<AdversarialValidationPolicy> configurePolicy)
{
services.Configure(configurePolicy);
services.AddSingleton<IAdversarialInputValidator, AdversarialInputValidator>();
return services;
}
/// <summary>
/// Adds adversarial input validation with a predefined policy.
/// </summary>
/// <param name="services">The service collection.</param>
/// <param name="policy">The validation policy to use.</param>
/// <returns>The service collection for chaining.</returns>
public static IServiceCollection AddAdversarialInputValidation(
this IServiceCollection services,
AdversarialValidationPolicy policy)
{
services.AddSingleton(Microsoft.Extensions.Options.Options.Create(policy));
services.AddSingleton<IAdversarialInputValidator, AdversarialInputValidator>();
return services;
}
}