using System.Text.Json; using System.Text.Json.Serialization; namespace AIStudio.Tools; public sealed class ContentStreamMetadataJsonConverter : JsonConverter { public override ContentStreamSseMetadata? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { using var jsonDoc = JsonDocument.ParseValue(ref reader); var root = jsonDoc.RootElement; var rawText = root.GetRawText(); var propertyName = root.EnumerateObject() .Select(p => p.Name) .FirstOrDefault(); return propertyName switch { "Text" => JsonSerializer.Deserialize(rawText, options), "Pdf" => JsonSerializer.Deserialize(rawText, options), "Spreadsheet" => JsonSerializer.Deserialize(rawText, options), "Presentation" => JsonSerializer.Deserialize(rawText, options), "Image" => JsonSerializer.Deserialize(rawText, options), "Document" => JsonSerializer.Deserialize(rawText, options), _ => null }; } public override void Write(Utf8JsonWriter writer, ContentStreamSseMetadata value, JsonSerializerOptions options) => JsonSerializer.Serialize(writer, value, value.GetType(), options); }