up
This commit is contained in:
		
							
								
								
									
										101
									
								
								src/StellaOps.Feedser.Source.Cccs/Internal/CccsFeedModels.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								src/StellaOps.Feedser.Source.Cccs/Internal/CccsFeedModels.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,101 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Text.Json;
 | 
			
		||||
using System.Text.Json.Serialization;
 | 
			
		||||
 | 
			
		||||
namespace StellaOps.Feedser.Source.Cccs.Internal;
 | 
			
		||||
 | 
			
		||||
internal sealed class CccsFeedResponse
 | 
			
		||||
{
 | 
			
		||||
    [JsonPropertyName("ERROR")]
 | 
			
		||||
    public bool Error { get; init; }
 | 
			
		||||
 | 
			
		||||
    [JsonPropertyName("response")]
 | 
			
		||||
    public List<CccsFeedItem> Response { get; init; } = new();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
internal sealed class CccsFeedItem
 | 
			
		||||
{
 | 
			
		||||
    [JsonPropertyName("nid")]
 | 
			
		||||
    public int Nid { get; init; }
 | 
			
		||||
 | 
			
		||||
    [JsonPropertyName("title")]
 | 
			
		||||
    public string? Title { get; init; }
 | 
			
		||||
 | 
			
		||||
    [JsonPropertyName("uuid")]
 | 
			
		||||
    public string? Uuid { get; init; }
 | 
			
		||||
 | 
			
		||||
    [JsonPropertyName("banner")]
 | 
			
		||||
    public string? Banner { get; init; }
 | 
			
		||||
 | 
			
		||||
    [JsonPropertyName("lang")]
 | 
			
		||||
    public string? Language { get; init; }
 | 
			
		||||
 | 
			
		||||
    [JsonPropertyName("date_modified")]
 | 
			
		||||
    public string? DateModified { get; init; }
 | 
			
		||||
 | 
			
		||||
    [JsonPropertyName("date_modified_ts")]
 | 
			
		||||
    public string? DateModifiedTimestamp { get; init; }
 | 
			
		||||
 | 
			
		||||
    [JsonPropertyName("date_created")]
 | 
			
		||||
    public string? DateCreated { get; init; }
 | 
			
		||||
 | 
			
		||||
    [JsonPropertyName("summary")]
 | 
			
		||||
    public string? Summary { get; init; }
 | 
			
		||||
 | 
			
		||||
    [JsonPropertyName("body")]
 | 
			
		||||
    public string[] Body { get; init; } = Array.Empty<string>();
 | 
			
		||||
 | 
			
		||||
    [JsonPropertyName("url")]
 | 
			
		||||
    public string? Url { get; init; }
 | 
			
		||||
 | 
			
		||||
    [JsonPropertyName("alert_type")]
 | 
			
		||||
    public JsonElement AlertType { get; init; }
 | 
			
		||||
 | 
			
		||||
    [JsonPropertyName("serial_number")]
 | 
			
		||||
    public string? SerialNumber { get; init; }
 | 
			
		||||
 | 
			
		||||
    [JsonPropertyName("subject")]
 | 
			
		||||
    public string? Subject { get; init; }
 | 
			
		||||
 | 
			
		||||
    [JsonPropertyName("moderation_state")]
 | 
			
		||||
    public string? ModerationState { get; init; }
 | 
			
		||||
 | 
			
		||||
    [JsonPropertyName("external_url")]
 | 
			
		||||
    public string? ExternalUrl { get; init; }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
internal sealed class CccsTaxonomyResponse
 | 
			
		||||
{
 | 
			
		||||
    [JsonPropertyName("ERROR")]
 | 
			
		||||
    public bool Error { get; init; }
 | 
			
		||||
 | 
			
		||||
    [JsonPropertyName("response")]
 | 
			
		||||
    public List<CccsTaxonomyItem> Response { get; init; } = new();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
internal sealed class CccsTaxonomyItem
 | 
			
		||||
{
 | 
			
		||||
    [JsonPropertyName("id")]
 | 
			
		||||
    public int Id { get; init; }
 | 
			
		||||
 | 
			
		||||
    [JsonPropertyName("title")]
 | 
			
		||||
    public string? Title { get; init; }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
internal sealed record CccsFeedResult(
 | 
			
		||||
    IReadOnlyList<CccsFeedItem> Items,
 | 
			
		||||
    IReadOnlyDictionary<int, string> AlertTypes,
 | 
			
		||||
    DateTimeOffset? LastModifiedUtc)
 | 
			
		||||
{
 | 
			
		||||
    public static CccsFeedResult Empty { get; } = new(
 | 
			
		||||
        Array.Empty<CccsFeedItem>(),
 | 
			
		||||
        new Dictionary<int, string>(0),
 | 
			
		||||
        null);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
internal static class CccsFeedResultExtensions
 | 
			
		||||
{
 | 
			
		||||
    public static CccsFeedResult ToResult(this IReadOnlyList<CccsFeedItem> items, DateTimeOffset? lastModified, IReadOnlyDictionary<int, string> alertTypes)
 | 
			
		||||
        => new(items, alertTypes, lastModified);
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user