30 lines
979 B
C#
30 lines
979 B
C#
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<Finding> 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
|
||
|
|
{
|
||
|
|
}
|