save progress
This commit is contained in:
@@ -4,6 +4,7 @@ using System.Text.Json;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using StellaOps.Cryptography;
|
||||
using StellaOps.Scanner.Reachability.Gates;
|
||||
|
||||
namespace StellaOps.Scanner.Reachability;
|
||||
|
||||
@@ -153,6 +154,30 @@ public sealed class RichGraphWriter
|
||||
if (!string.IsNullOrWhiteSpace(edge.SymbolDigest)) writer.WriteString("symbol_digest", edge.SymbolDigest);
|
||||
writer.WriteNumber("confidence", edge.Confidence);
|
||||
|
||||
if (edge.Gates is { Count: > 0 } || edge.GateMultiplierBps != 10000)
|
||||
{
|
||||
writer.WriteNumber("gate_multiplier_bps", edge.GateMultiplierBps);
|
||||
}
|
||||
|
||||
if (edge.Gates is { Count: > 0 })
|
||||
{
|
||||
writer.WritePropertyName("gates");
|
||||
writer.WriteStartArray();
|
||||
foreach (var gate in edge.Gates)
|
||||
{
|
||||
writer.WriteStartObject();
|
||||
writer.WriteString("type", GateTypeToLowerCamelCase(gate.Type));
|
||||
writer.WriteString("detail", gate.Detail);
|
||||
writer.WriteString("guard_symbol", gate.GuardSymbol);
|
||||
if (!string.IsNullOrWhiteSpace(gate.SourceFile)) writer.WriteString("source_file", gate.SourceFile);
|
||||
if (gate.LineNumber is not null) writer.WriteNumber("line_number", gate.LineNumber.Value);
|
||||
writer.WriteNumber("confidence", gate.Confidence);
|
||||
writer.WriteString("detection_method", gate.DetectionMethod);
|
||||
writer.WriteEndObject();
|
||||
}
|
||||
writer.WriteEndArray();
|
||||
}
|
||||
|
||||
if (edge.Evidence is { Count: > 0 })
|
||||
{
|
||||
writer.WritePropertyName("evidence");
|
||||
@@ -188,6 +213,16 @@ public sealed class RichGraphWriter
|
||||
writer.WriteEndObject();
|
||||
}
|
||||
|
||||
private static string GateTypeToLowerCamelCase(GateType type)
|
||||
=> type switch
|
||||
{
|
||||
GateType.AuthRequired => "authRequired",
|
||||
GateType.FeatureFlag => "featureFlag",
|
||||
GateType.AdminOnly => "adminOnly",
|
||||
GateType.NonDefaultConfig => "nonDefaultConfig",
|
||||
_ => type.ToString()
|
||||
};
|
||||
|
||||
private static void WriteSymbol(Utf8JsonWriter writer, ReachabilitySymbol symbol)
|
||||
{
|
||||
writer.WriteStartObject();
|
||||
|
||||
Reference in New Issue
Block a user