Refactor code structure for improved readability and maintainability; optimize performance in key functions.
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
namespace StellaOps.Concelier.Connector.Epss.Configuration;
|
||||
|
||||
public sealed class EpssOptions
|
||||
{
|
||||
public const string SectionName = "Concelier:Epss";
|
||||
public const string HttpClientName = "source.epss";
|
||||
|
||||
public Uri BaseUri { get; set; } = new("https://epss.empiricalsecurity.com/", UriKind.Absolute);
|
||||
|
||||
public bool FetchCurrent { get; set; } = true;
|
||||
|
||||
public int CatchUpDays { get; set; } = 7;
|
||||
|
||||
public TimeSpan HttpTimeout { get; set; } = TimeSpan.FromMinutes(2);
|
||||
|
||||
public int MaxRetries { get; set; } = 3;
|
||||
|
||||
public bool AirgapMode { get; set; }
|
||||
|
||||
public string? BundlePath { get; set; }
|
||||
|
||||
public string UserAgent { get; set; } = "StellaOps.Concelier.Epss/1.0";
|
||||
|
||||
[MemberNotNull(nameof(BaseUri), nameof(UserAgent))]
|
||||
public void Validate()
|
||||
{
|
||||
if (BaseUri is null || !BaseUri.IsAbsoluteUri)
|
||||
{
|
||||
throw new InvalidOperationException("BaseUri must be an absolute URI.");
|
||||
}
|
||||
|
||||
if (CatchUpDays < 0)
|
||||
{
|
||||
throw new InvalidOperationException("CatchUpDays cannot be negative.");
|
||||
}
|
||||
|
||||
if (HttpTimeout <= TimeSpan.Zero)
|
||||
{
|
||||
throw new InvalidOperationException("HttpTimeout must be greater than zero.");
|
||||
}
|
||||
|
||||
if (MaxRetries < 0)
|
||||
{
|
||||
throw new InvalidOperationException("MaxRetries cannot be negative.");
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(UserAgent))
|
||||
{
|
||||
throw new InvalidOperationException("UserAgent must be provided.");
|
||||
}
|
||||
|
||||
if (AirgapMode && string.IsNullOrWhiteSpace(BundlePath))
|
||||
{
|
||||
throw new InvalidOperationException("BundlePath must be provided when AirgapMode is enabled.");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user