A better Rust ATProto crate
1// @generated by jacquard-lexicon. DO NOT EDIT. 2// 3// Lexicon: pub.leaflet.publication 4// 5// This file was automatically generated from Lexicon schemas. 6// Any manual changes will be overwritten on the next regeneration. 7 8///Record declaring a publication 9#[jacquard_derive::lexicon] 10#[derive( 11 serde::Serialize, 12 serde::Deserialize, 13 Debug, 14 Clone, 15 PartialEq, 16 Eq, 17 jacquard_derive::IntoStatic 18)] 19#[serde(rename_all = "camelCase")] 20pub struct Publication<'a> { 21 #[serde(skip_serializing_if = "std::option::Option::is_none")] 22 #[serde(borrow)] 23 pub base_path: std::option::Option<jacquard_common::types::string::Uri<'a>>, 24 #[serde(skip_serializing_if = "std::option::Option::is_none")] 25 #[serde(borrow)] 26 pub description: std::option::Option<jacquard_common::CowStr<'a>>, 27 #[serde(skip_serializing_if = "std::option::Option::is_none")] 28 #[serde(borrow)] 29 pub icon: std::option::Option<jacquard_common::types::blob::Blob<'a>>, 30 #[serde(borrow)] 31 pub name: jacquard_common::CowStr<'a>, 32 #[serde(skip_serializing_if = "std::option::Option::is_none")] 33 #[serde(borrow)] 34 pub preferences: std::option::Option< 35 crate::pub_leaflet::publication::Preferences<'a>, 36 >, 37 #[serde(skip_serializing_if = "std::option::Option::is_none")] 38 #[serde(borrow)] 39 pub theme: std::option::Option<crate::pub_leaflet::publication::Theme<'a>>, 40} 41 42/// Typed wrapper for GetRecord response with this collection's record type. 43#[derive( 44 serde::Serialize, 45 serde::Deserialize, 46 Debug, 47 Clone, 48 PartialEq, 49 Eq, 50 jacquard_derive::IntoStatic 51)] 52#[serde(rename_all = "camelCase")] 53pub struct PublicationGetRecordOutput<'a> { 54 #[serde(skip_serializing_if = "std::option::Option::is_none")] 55 #[serde(borrow)] 56 pub cid: std::option::Option<jacquard_common::types::string::Cid<'a>>, 57 #[serde(borrow)] 58 pub uri: jacquard_common::types::string::AtUri<'a>, 59 #[serde(borrow)] 60 pub value: Publication<'a>, 61} 62 63/// Marker type for deserializing records from this collection. 64pub struct PublicationRecord; 65impl jacquard_common::xrpc::XrpcResp for PublicationRecord { 66 const NSID: &'static str = "pub.leaflet.publication"; 67 const ENCODING: &'static str = "application/json"; 68 type Output<'de> = PublicationGetRecordOutput<'de>; 69 type Err<'de> = jacquard_common::types::collection::RecordError<'de>; 70} 71 72impl jacquard_common::types::collection::Collection for Publication<'_> { 73 const NSID: &'static str = "pub.leaflet.publication"; 74 type Record = PublicationRecord; 75} 76 77impl From<PublicationGetRecordOutput<'_>> for Publication<'_> { 78 fn from(output: PublicationGetRecordOutput<'_>) -> Self { 79 use jacquard_common::IntoStatic; 80 output.value.into_static() 81 } 82} 83 84#[jacquard_derive::lexicon] 85#[derive( 86 serde::Serialize, 87 serde::Deserialize, 88 Debug, 89 Clone, 90 PartialEq, 91 Eq, 92 jacquard_derive::IntoStatic 93)] 94#[serde(rename_all = "camelCase")] 95pub struct Preferences<'a> { 96 #[serde(skip_serializing_if = "std::option::Option::is_none")] 97 pub show_comments: std::option::Option<bool>, 98 #[serde(skip_serializing_if = "std::option::Option::is_none")] 99 pub show_in_discover: std::option::Option<bool>, 100} 101 102#[jacquard_derive::lexicon] 103#[derive( 104 serde::Serialize, 105 serde::Deserialize, 106 Debug, 107 Clone, 108 PartialEq, 109 Eq, 110 jacquard_derive::IntoStatic 111)] 112#[serde(rename_all = "camelCase")] 113pub struct Theme<'a> { 114 #[serde(skip_serializing_if = "std::option::Option::is_none")] 115 #[serde(borrow)] 116 pub accent_background: std::option::Option<ThemeAccentBackground<'a>>, 117 #[serde(skip_serializing_if = "std::option::Option::is_none")] 118 #[serde(borrow)] 119 pub accent_text: std::option::Option<ThemeAccentText<'a>>, 120 #[serde(skip_serializing_if = "std::option::Option::is_none")] 121 #[serde(borrow)] 122 pub background_color: std::option::Option<ThemeBackgroundColor<'a>>, 123 #[serde(skip_serializing_if = "std::option::Option::is_none")] 124 #[serde(borrow)] 125 pub background_image: std::option::Option< 126 crate::pub_leaflet::theme::background_image::BackgroundImage<'a>, 127 >, 128 #[serde(skip_serializing_if = "std::option::Option::is_none")] 129 #[serde(borrow)] 130 pub page_background: std::option::Option<ThemePageBackground<'a>>, 131 #[serde(skip_serializing_if = "std::option::Option::is_none")] 132 #[serde(borrow)] 133 pub primary: std::option::Option<ThemePrimary<'a>>, 134 #[serde(skip_serializing_if = "std::option::Option::is_none")] 135 pub show_page_background: std::option::Option<bool>, 136} 137 138#[jacquard_derive::open_union] 139#[derive( 140 serde::Serialize, 141 serde::Deserialize, 142 Debug, 143 Clone, 144 PartialEq, 145 Eq, 146 jacquard_derive::IntoStatic 147)] 148#[serde(tag = "$type")] 149#[serde(bound(deserialize = "'de: 'a"))] 150pub enum ThemeAccentBackground<'a> { 151 #[serde(rename = "pub.leaflet.theme.color#rgba")] 152 ColorRgba(Box<crate::pub_leaflet::theme::color::Rgba<'a>>), 153 #[serde(rename = "pub.leaflet.theme.color#rgb")] 154 ColorRgb(Box<crate::pub_leaflet::theme::color::Rgb<'a>>), 155} 156 157#[jacquard_derive::open_union] 158#[derive( 159 serde::Serialize, 160 serde::Deserialize, 161 Debug, 162 Clone, 163 PartialEq, 164 Eq, 165 jacquard_derive::IntoStatic 166)] 167#[serde(tag = "$type")] 168#[serde(bound(deserialize = "'de: 'a"))] 169pub enum ThemeAccentText<'a> { 170 #[serde(rename = "pub.leaflet.theme.color#rgba")] 171 ColorRgba(Box<crate::pub_leaflet::theme::color::Rgba<'a>>), 172 #[serde(rename = "pub.leaflet.theme.color#rgb")] 173 ColorRgb(Box<crate::pub_leaflet::theme::color::Rgb<'a>>), 174} 175 176#[jacquard_derive::open_union] 177#[derive( 178 serde::Serialize, 179 serde::Deserialize, 180 Debug, 181 Clone, 182 PartialEq, 183 Eq, 184 jacquard_derive::IntoStatic 185)] 186#[serde(tag = "$type")] 187#[serde(bound(deserialize = "'de: 'a"))] 188pub enum ThemeBackgroundColor<'a> { 189 #[serde(rename = "pub.leaflet.theme.color#rgba")] 190 ColorRgba(Box<crate::pub_leaflet::theme::color::Rgba<'a>>), 191 #[serde(rename = "pub.leaflet.theme.color#rgb")] 192 ColorRgb(Box<crate::pub_leaflet::theme::color::Rgb<'a>>), 193} 194 195#[jacquard_derive::open_union] 196#[derive( 197 serde::Serialize, 198 serde::Deserialize, 199 Debug, 200 Clone, 201 PartialEq, 202 Eq, 203 jacquard_derive::IntoStatic 204)] 205#[serde(tag = "$type")] 206#[serde(bound(deserialize = "'de: 'a"))] 207pub enum ThemePageBackground<'a> { 208 #[serde(rename = "pub.leaflet.theme.color#rgba")] 209 ColorRgba(Box<crate::pub_leaflet::theme::color::Rgba<'a>>), 210 #[serde(rename = "pub.leaflet.theme.color#rgb")] 211 ColorRgb(Box<crate::pub_leaflet::theme::color::Rgb<'a>>), 212} 213 214#[jacquard_derive::open_union] 215#[derive( 216 serde::Serialize, 217 serde::Deserialize, 218 Debug, 219 Clone, 220 PartialEq, 221 Eq, 222 jacquard_derive::IntoStatic 223)] 224#[serde(tag = "$type")] 225#[serde(bound(deserialize = "'de: 'a"))] 226pub enum ThemePrimary<'a> { 227 #[serde(rename = "pub.leaflet.theme.color#rgba")] 228 ColorRgba(Box<crate::pub_leaflet::theme::color::Rgba<'a>>), 229 #[serde(rename = "pub.leaflet.theme.color#rgb")] 230 ColorRgb(Box<crate::pub_leaflet::theme::color::Rgb<'a>>), 231}