Files
git.stella-ops.org/src/StellaOps.Feedser.Source.Vndr.Vmware/Configuration/VmwareOptions.cs

55 lines
1.6 KiB
C#

using System.Diagnostics.CodeAnalysis;
namespace StellaOps.Feedser.Source.Vndr.Vmware.Configuration;
public sealed class VmwareOptions
{
public const string HttpClientName = "source.vmware";
public Uri IndexUri { get; set; } = new("https://example.invalid/vmsa/index.json", UriKind.Absolute);
public TimeSpan InitialBackfill { get; set; } = TimeSpan.FromDays(30);
public TimeSpan ModifiedTolerance { get; set; } = TimeSpan.FromHours(2);
public int MaxAdvisoriesPerFetch { get; set; } = 50;
public TimeSpan RequestDelay { get; set; } = TimeSpan.FromMilliseconds(250);
public TimeSpan HttpTimeout { get; set; } = TimeSpan.FromMinutes(2);
[MemberNotNull(nameof(IndexUri))]
public void Validate()
{
if (IndexUri is null || !IndexUri.IsAbsoluteUri)
{
throw new InvalidOperationException("VMware index URI must be absolute.");
}
if (InitialBackfill <= TimeSpan.Zero)
{
throw new InvalidOperationException("Initial backfill must be positive.");
}
if (ModifiedTolerance < TimeSpan.Zero)
{
throw new InvalidOperationException("Modified tolerance cannot be negative.");
}
if (MaxAdvisoriesPerFetch <= 0)
{
throw new InvalidOperationException("Max advisories per fetch must be greater than zero.");
}
if (RequestDelay < TimeSpan.Zero)
{
throw new InvalidOperationException("Request delay cannot be negative.");
}
if (HttpTimeout <= TimeSpan.Zero)
{
throw new InvalidOperationException("HTTP timeout must be positive.");
}
}
}