using System.Reflection; using System.Text.Json.Serialization; namespace DysonNetwork.Sphere.Connection.WebReader; /// /// The embeddable can be used in the post or messages' meta's embeds fields /// To render a richer type of content. /// /// A simple example of using link preview embed: /// /// { /// // ... post content /// "meta": { /// "embeds": [ /// { /// "type": "link", /// "title: "...", /// /// ... /// } /// ] /// } /// } /// /// public abstract class EmbeddableBase { public abstract string Type { get; } public Dictionary ToDictionary() { var dict = new Dictionary(); foreach (var prop in GetType().GetProperties()) { if (prop.GetCustomAttribute() is not null) continue; var value = prop.GetValue(this); if (value is null) continue; dict[prop.Name] = value; } return dict; } }