102 lines
2.6 KiB
C#
102 lines
2.6 KiB
C#
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);
|
|
}
|