using System.Text.Json; using System.Text.Json.Serialization; namespace MeWeb.Core.Checks; public class SharePayload { public string App { get; set; } public string Platform { get; set; } public string Language { get; set; } public DateTimeOffset CheckedAt { get; set; } public List Findings { get; set; } = []; public static SharePayload From(RunReport run, string app, string platform, string language) => new() { App = app, Platform = platform, Language = language, CheckedAt = run.StartedAt, Findings = [.. run.Findings.OrderBy(f => f.Id)], }; public string ToJson() => JsonSerializer.Serialize(this, ShareJsonContext.Default.SharePayload); } [JsonSourceGenerationOptions(JsonSerializerDefaults.Web, WriteIndented = true, UseStringEnumConverter = true, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull)] [JsonSerializable(typeof(SharePayload))] public partial class ShareJsonContext : JsonSerializerContext { }