40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
using System.Collections.Immutable;
|
|
using System.Text.Json;
|
|
|
|
namespace StellaOps.Concelier.RawModels;
|
|
|
|
public static class RawDocumentFactory
|
|
{
|
|
public static AdvisoryRawDocument CreateAdvisory(
|
|
string tenant,
|
|
RawSourceMetadata source,
|
|
RawUpstreamMetadata upstream,
|
|
RawContent content,
|
|
RawIdentifiers identifiers,
|
|
RawLinkset linkset,
|
|
string? supersedes = null)
|
|
{
|
|
var clonedContent = content with { Raw = Clone(content.Raw) };
|
|
return new AdvisoryRawDocument(tenant, source, upstream, clonedContent, identifiers, linkset, supersedes);
|
|
}
|
|
|
|
public static VexRawDocument CreateVex(
|
|
string tenant,
|
|
RawSourceMetadata source,
|
|
RawUpstreamMetadata upstream,
|
|
RawContent content,
|
|
RawLinkset linkset,
|
|
ImmutableArray<VexStatementSummary> statements,
|
|
string? supersedes = null)
|
|
{
|
|
var clonedContent = content with { Raw = Clone(content.Raw) };
|
|
return new VexRawDocument(tenant, source, upstream, clonedContent, linkset, statements, supersedes);
|
|
}
|
|
|
|
private static JsonElement Clone(JsonElement element)
|
|
{
|
|
using var document = JsonDocument.Parse(element.GetRawText());
|
|
return document.RootElement.Clone();
|
|
}
|
|
}
|