45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| namespace StellaOps.Concelier.Connector.Vndr.Chromium.Configuration;
 | |
| 
 | |
| public sealed class ChromiumOptions
 | |
| {
 | |
|     public const string HttpClientName = "source-vndr-chromium";
 | |
| 
 | |
|     public Uri FeedUri { get; set; } = new("https://chromereleases.googleblog.com/atom.xml");
 | |
| 
 | |
|     public TimeSpan InitialBackfill { get; set; } = TimeSpan.FromDays(30);
 | |
| 
 | |
|     public TimeSpan WindowOverlap { get; set; } = TimeSpan.FromDays(2);
 | |
| 
 | |
|     public int MaxFeedPages { get; set; } = 4;
 | |
| 
 | |
|     public int MaxEntriesPerPage { get; set; } = 50;
 | |
| 
 | |
|     public void Validate()
 | |
|     {
 | |
|         if (FeedUri is null || !FeedUri.IsAbsoluteUri)
 | |
|         {
 | |
|             throw new ArgumentException("FeedUri must be an absolute URI.", nameof(FeedUri));
 | |
|         }
 | |
| 
 | |
|         if (InitialBackfill <= TimeSpan.Zero)
 | |
|         {
 | |
|             throw new ArgumentException("InitialBackfill must be positive.", nameof(InitialBackfill));
 | |
|         }
 | |
| 
 | |
|         if (WindowOverlap < TimeSpan.Zero)
 | |
|         {
 | |
|             throw new ArgumentException("WindowOverlap cannot be negative.", nameof(WindowOverlap));
 | |
|         }
 | |
| 
 | |
|         if (MaxFeedPages <= 0)
 | |
|         {
 | |
|             throw new ArgumentException("MaxFeedPages must be positive.", nameof(MaxFeedPages));
 | |
|         }
 | |
| 
 | |
|         if (MaxEntriesPerPage <= 0 || MaxEntriesPerPage > 100)
 | |
|         {
 | |
|             throw new ArgumentException("MaxEntriesPerPage must be between 1 and 100.", nameof(MaxEntriesPerPage));
 | |
|         }
 | |
|     }
 | |
| }
 |