diff --git a/src/lysand/objects.rs b/src/lysand/objects.rs index f8c84e4..5344577 100644 --- a/src/lysand/objects.rs +++ b/src/lysand/objects.rs @@ -217,13 +217,21 @@ pub struct FieldKV { #[derive(Debug, Serialize, Deserialize, Clone)] pub struct ContentEntry { content: String, + #[serde(skip_serializing_if = "Option::is_none")] description: Option, + #[serde(skip_serializing_if = "Option::is_none")] size: Option, + #[serde(skip_serializing_if = "Option::is_none")] hash: Option, + #[serde(skip_serializing_if = "Option::is_none")] blurhash: Option, + #[serde(skip_serializing_if = "Option::is_none")] fps: Option, + #[serde(skip_serializing_if = "Option::is_none")] width: Option, + #[serde(skip_serializing_if = "Option::is_none")] height: Option, + #[serde(skip_serializing_if = "Option::is_none")] duration: Option, } impl ContentEntry { @@ -251,6 +259,7 @@ pub struct User { pub uri: Url, #[serde(with = "iso_lysand")] pub created_at: OffsetDateTime, + #[serde(skip_serializing_if = "Option::is_none")] pub display_name: Option, pub inbox: Url, pub outbox: Url, @@ -260,17 +269,23 @@ pub struct User { pub likes: Url, pub dislikes: Url, pub username: String, + #[serde(skip_serializing_if = "Option::is_none")] pub bio: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub avatar: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub header: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub fields: Option>, pub indexable: bool, + #[serde(skip_serializing_if = "Option::is_none")] pub extensions: Option, } #[derive(Debug, Serialize, Deserialize, Clone)] pub struct ExtensionSpecs { #[serde(rename = "org.lysand:custom_emojis")] + #[serde(skip_serializing_if = "Option::is_none")] pub custom_emojis: Option, } @@ -297,7 +312,9 @@ pub struct LinkPreview { description: String, title: String, link: Url, + #[serde(skip_serializing_if = "Option::is_none")] image: Option, + #[serde(skip_serializing_if = "Option::is_none")] icon: Option, } @@ -310,17 +327,29 @@ pub struct Note { pub author: Url, #[serde(with = "iso_lysand")] pub created_at: OffsetDateTime, + #[serde(skip_serializing_if = "Option::is_none")] pub category: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub content: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub device: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub previews: Option>, + #[serde(skip_serializing_if = "Option::is_none")] pub group: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub attachments: Option>, + #[serde(skip_serializing_if = "Option::is_none")] pub replies_to: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub quotes: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub mentions: Option>, + #[serde(skip_serializing_if = "Option::is_none")] pub subject: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub is_sensitive: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub visibility: Option, //TODO extensions } @@ -329,7 +358,9 @@ pub struct Note { pub struct Outbox { pub first: Url, pub last: Url, + #[serde(skip_serializing_if = "Option::is_none")] pub next: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub prev: Option, pub items: Vec, } diff --git a/src/objects/person.rs b/src/objects/person.rs index 765828f..790ec6f 100644 --- a/src/objects/person.rs +++ b/src/objects/person.rs @@ -79,28 +79,45 @@ pub struct Person { pub id: ObjectId, pub inbox: Url, pub public_key: PublicKey, + #[serde(skip_serializing_if = "Option::is_none")] pub indexable: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub discoverable: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub manually_approves_followers: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub followers: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub following: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub featured: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub endpoints: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub outbox: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub featured_tags: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub tag: Option>, + #[serde(skip_serializing_if = "Option::is_none")] pub icon: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub image: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub attachment: Option>, } #[derive(Clone, Debug, Deserialize, Serialize)] pub struct TagType { + #[serde(skip_serializing_if = "Option::is_none")] pub id: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub href: Option, pub name: String, #[serde(rename = "type")] pub type_: String, + #[serde(skip_serializing_if = "Option::is_none")] pub updated: Option>, + #[serde(skip_serializing_if = "Option::is_none")] pub icon: Option, } diff --git a/src/objects/post.rs b/src/objects/post.rs index 6734a0a..b62c6b2 100644 --- a/src/objects/post.rs +++ b/src/objects/post.rs @@ -39,9 +39,12 @@ pub struct Note { #[serde(deserialize_with = "deserialize_one_or_many")] pub(crate) to: Vec, pub(crate) content: String, + #[serde(skip_serializing_if = "Option::is_none")] pub(crate) in_reply_to: Option>, pub(crate) tag: Vec, + #[serde(skip_serializing_if = "Option::is_none")] pub(crate) sensitive: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub(crate) cc: Option>, }