47 lines
1.3 KiB
C#
47 lines
1.3 KiB
C#
using System;
|
|
|
|
namespace StellaOps.Feedser.Source.CertFr.Configuration;
|
|
|
|
public sealed class CertFrOptions
|
|
{
|
|
public const string HttpClientName = "cert-fr";
|
|
|
|
public Uri FeedUri { get; set; } = new("https://www.cert.ssi.gouv.fr/feed/alertes/");
|
|
|
|
public TimeSpan InitialBackfill { get; set; } = TimeSpan.FromDays(30);
|
|
|
|
public TimeSpan WindowOverlap { get; set; } = TimeSpan.FromDays(2);
|
|
|
|
public int MaxItemsPerFetch { get; set; } = 100;
|
|
|
|
public TimeSpan RequestDelay { get; set; } = TimeSpan.Zero;
|
|
|
|
public void Validate()
|
|
{
|
|
if (FeedUri is null || !FeedUri.IsAbsoluteUri)
|
|
{
|
|
throw new InvalidOperationException("Cert-FR FeedUri must be an absolute URI.");
|
|
}
|
|
|
|
if (InitialBackfill <= TimeSpan.Zero)
|
|
{
|
|
throw new InvalidOperationException("InitialBackfill must be a positive duration.");
|
|
}
|
|
|
|
if (WindowOverlap < TimeSpan.Zero)
|
|
{
|
|
throw new InvalidOperationException("WindowOverlap cannot be negative.");
|
|
}
|
|
|
|
if (MaxItemsPerFetch <= 0)
|
|
{
|
|
throw new InvalidOperationException("MaxItemsPerFetch must be positive.");
|
|
}
|
|
|
|
if (RequestDelay < TimeSpan.Zero)
|
|
{
|
|
throw new InvalidOperationException("RequestDelay cannot be negative.");
|
|
}
|
|
}
|
|
}
|