A better Rust ATProto crate
1// @generated by jacquard-lexicon. DO NOT EDIT. 2// 3// Lexicon: com.atproto.label.defs 4// 5// This file was automatically generated from Lexicon schemas. 6// Any manual changes will be overwritten on the next regeneration. 7 8pub mod query_labels; 9pub mod subscribe_labels; 10 11///Metadata tag on an atproto resource (eg, repo or record). 12#[jacquard_derive::lexicon] 13#[derive( 14 serde::Serialize, 15 serde::Deserialize, 16 Debug, 17 Clone, 18 PartialEq, 19 Eq, 20 jacquard_derive::IntoStatic 21)] 22#[serde(rename_all = "camelCase")] 23pub struct Label<'a> { 24 ///Optionally, CID specifying the specific version of 'uri' resource this label applies to. 25 #[serde(skip_serializing_if = "std::option::Option::is_none")] 26 #[serde(borrow)] 27 pub cid: std::option::Option<jacquard_common::types::string::Cid<'a>>, 28 ///Timestamp when this label was created. 29 pub cts: jacquard_common::types::string::Datetime, 30 ///Timestamp at which this label expires (no longer applies). 31 #[serde(skip_serializing_if = "std::option::Option::is_none")] 32 pub exp: std::option::Option<jacquard_common::types::string::Datetime>, 33 ///If true, this is a negation label, overwriting a previous label. 34 #[serde(skip_serializing_if = "std::option::Option::is_none")] 35 pub neg: std::option::Option<bool>, 36 ///Signature of dag-cbor encoded label. 37 #[serde(skip_serializing_if = "std::option::Option::is_none")] 38 pub sig: std::option::Option<bytes::Bytes>, 39 ///DID of the actor who created this label. 40 #[serde(borrow)] 41 pub src: jacquard_common::types::string::Did<'a>, 42 ///AT URI of the record, repository (account), or other resource that this label applies to. 43 #[serde(borrow)] 44 pub uri: jacquard_common::types::string::Uri<'a>, 45 ///The short string name of the value or type of this label. 46 #[serde(borrow)] 47 pub val: jacquard_common::CowStr<'a>, 48 ///The AT Protocol version of the label object. 49 #[serde(skip_serializing_if = "std::option::Option::is_none")] 50 pub ver: std::option::Option<i64>, 51} 52 53#[derive(Debug, Clone, PartialEq, Eq, Hash)] 54pub enum LabelValue<'a> { 55 Hide, 56 NoPromote, 57 Warn, 58 NoUnauthenticated, 59 DmcaViolation, 60 Doxxing, 61 Porn, 62 Sexual, 63 Nudity, 64 Nsfl, 65 Gore, 66 Other(jacquard_common::CowStr<'a>), 67} 68 69impl<'a> LabelValue<'a> { 70 pub fn as_str(&self) -> &str { 71 match self { 72 Self::Hide => "!hide", 73 Self::NoPromote => "!no-promote", 74 Self::Warn => "!warn", 75 Self::NoUnauthenticated => "!no-unauthenticated", 76 Self::DmcaViolation => "dmca-violation", 77 Self::Doxxing => "doxxing", 78 Self::Porn => "porn", 79 Self::Sexual => "sexual", 80 Self::Nudity => "nudity", 81 Self::Nsfl => "nsfl", 82 Self::Gore => "gore", 83 Self::Other(s) => s.as_ref(), 84 } 85 } 86} 87 88impl<'a> From<&'a str> for LabelValue<'a> { 89 fn from(s: &'a str) -> Self { 90 match s { 91 "!hide" => Self::Hide, 92 "!no-promote" => Self::NoPromote, 93 "!warn" => Self::Warn, 94 "!no-unauthenticated" => Self::NoUnauthenticated, 95 "dmca-violation" => Self::DmcaViolation, 96 "doxxing" => Self::Doxxing, 97 "porn" => Self::Porn, 98 "sexual" => Self::Sexual, 99 "nudity" => Self::Nudity, 100 "nsfl" => Self::Nsfl, 101 "gore" => Self::Gore, 102 _ => Self::Other(jacquard_common::CowStr::from(s)), 103 } 104 } 105} 106 107impl<'a> From<String> for LabelValue<'a> { 108 fn from(s: String) -> Self { 109 match s.as_str() { 110 "!hide" => Self::Hide, 111 "!no-promote" => Self::NoPromote, 112 "!warn" => Self::Warn, 113 "!no-unauthenticated" => Self::NoUnauthenticated, 114 "dmca-violation" => Self::DmcaViolation, 115 "doxxing" => Self::Doxxing, 116 "porn" => Self::Porn, 117 "sexual" => Self::Sexual, 118 "nudity" => Self::Nudity, 119 "nsfl" => Self::Nsfl, 120 "gore" => Self::Gore, 121 _ => Self::Other(jacquard_common::CowStr::from(s)), 122 } 123 } 124} 125 126impl<'a> AsRef<str> for LabelValue<'a> { 127 fn as_ref(&self) -> &str { 128 self.as_str() 129 } 130} 131 132impl<'a> serde::Serialize for LabelValue<'a> { 133 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> 134 where 135 S: serde::Serializer, 136 { 137 serializer.serialize_str(self.as_str()) 138 } 139} 140 141impl<'de, 'a> serde::Deserialize<'de> for LabelValue<'a> 142where 143 'de: 'a, 144{ 145 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> 146 where 147 D: serde::Deserializer<'de>, 148 { 149 let s = <&'de str>::deserialize(deserializer)?; 150 Ok(Self::from(s)) 151 } 152} 153 154impl jacquard_common::IntoStatic for LabelValue<'_> { 155 type Output = LabelValue<'static>; 156 fn into_static(self) -> Self::Output { 157 match self { 158 LabelValue::Hide => LabelValue::Hide, 159 LabelValue::NoPromote => LabelValue::NoPromote, 160 LabelValue::Warn => LabelValue::Warn, 161 LabelValue::NoUnauthenticated => LabelValue::NoUnauthenticated, 162 LabelValue::DmcaViolation => LabelValue::DmcaViolation, 163 LabelValue::Doxxing => LabelValue::Doxxing, 164 LabelValue::Porn => LabelValue::Porn, 165 LabelValue::Sexual => LabelValue::Sexual, 166 LabelValue::Nudity => LabelValue::Nudity, 167 LabelValue::Nsfl => LabelValue::Nsfl, 168 LabelValue::Gore => LabelValue::Gore, 169 LabelValue::Other(v) => LabelValue::Other(v.into_static()), 170 } 171 } 172} 173 174///Declares a label value and its expected interpretations and behaviors. 175#[jacquard_derive::lexicon] 176#[derive( 177 serde::Serialize, 178 serde::Deserialize, 179 Debug, 180 Clone, 181 PartialEq, 182 Eq, 183 jacquard_derive::IntoStatic 184)] 185#[serde(rename_all = "camelCase")] 186pub struct LabelValueDefinition<'a> { 187 ///Does the user need to have adult content enabled in order to configure this label? 188 #[serde(skip_serializing_if = "std::option::Option::is_none")] 189 pub adult_only: std::option::Option<bool>, 190 ///What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing. 191 #[serde(borrow)] 192 pub blurs: jacquard_common::CowStr<'a>, 193 ///The default setting for this label. 194 #[serde(skip_serializing_if = "std::option::Option::is_none")] 195 #[serde(borrow)] 196 pub default_setting: std::option::Option<jacquard_common::CowStr<'a>>, 197 ///The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+). 198 #[serde(borrow)] 199 pub identifier: jacquard_common::CowStr<'a>, 200 #[serde(borrow)] 201 pub locales: Vec<crate::com_atproto::label::LabelValueDefinitionStrings<'a>>, 202 ///How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing. 203 #[serde(borrow)] 204 pub severity: jacquard_common::CowStr<'a>, 205} 206 207///Strings which describe the label in the UI, localized into a specific language. 208#[jacquard_derive::lexicon] 209#[derive( 210 serde::Serialize, 211 serde::Deserialize, 212 Debug, 213 Clone, 214 PartialEq, 215 Eq, 216 jacquard_derive::IntoStatic 217)] 218#[serde(rename_all = "camelCase")] 219pub struct LabelValueDefinitionStrings<'a> { 220 ///A longer description of what the label means and why it might be applied. 221 #[serde(borrow)] 222 pub description: jacquard_common::CowStr<'a>, 223 ///The code of the language these strings are written in. 224 pub lang: jacquard_common::types::string::Language, 225 ///A short human-readable name for the label. 226 #[serde(borrow)] 227 pub name: jacquard_common::CowStr<'a>, 228} 229 230///Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel. 231#[jacquard_derive::lexicon] 232#[derive( 233 serde::Serialize, 234 serde::Deserialize, 235 Debug, 236 Clone, 237 PartialEq, 238 Eq, 239 jacquard_derive::IntoStatic 240)] 241#[serde(rename_all = "camelCase")] 242pub struct SelfLabel<'a> { 243 ///The short string name of the value or type of this label. 244 #[serde(borrow)] 245 pub val: jacquard_common::CowStr<'a>, 246} 247 248///Metadata tags on an atproto record, published by the author within the record. 249#[jacquard_derive::lexicon] 250#[derive( 251 serde::Serialize, 252 serde::Deserialize, 253 Debug, 254 Clone, 255 PartialEq, 256 Eq, 257 jacquard_derive::IntoStatic 258)] 259#[serde(rename_all = "camelCase")] 260pub struct SelfLabels<'a> { 261 #[serde(borrow)] 262 pub values: Vec<crate::com_atproto::label::SelfLabel<'a>>, 263}