using MessagePack; using System.Text.Json.Serialization; namespace SVSim.EmulatedEntrypoint.Models.Dtos.Internal; /// /// Wraps responses in the format the official game client expects, with a header section for additional data. Not for manual endpoint use, this wrapping is done automatically in a middleware. /// [MessagePackObject] public class DataWrapper { /// /// Wire-shape projection of the response envelope headers. The middleware builds a /// strongly-typed POCO and runs it through the same STJ + /// ConvertJsonTreeToPlainObject pipeline that the controller's response goes /// through, yielding this dict with absent keys for null-valued optional fields. /// Typed as (not ) because /// the projected shape is fully known — only the per-key value type varies. Direct /// assignment of the typed POCO would let MessagePack's contractless resolver emit /// "key":null for nullables, which the client treats as "key present" via /// Keys.Contains (see NetworkTask.isResourceVersionUp for the /// load-bearing case). /// [JsonPropertyName("data_headers")] [Key("data_headers")] public Dictionary DataHeaders { get; set; } = new(); /// /// The response data from the endpoint. /// [JsonPropertyName("data")] [Key("data")] public object Data { get; set; } = new(); }