A better Rust ATProto crate
at oauth 9.2 kB view raw
1// @generated by jacquard-lexicon. DO NOT EDIT. 2// 3// Lexicon: com.atproto.server.createAccount 4// 5// This file was automatically generated from Lexicon schemas. 6// Any manual changes will be overwritten on the next regeneration. 7 8#[jacquard_derive::lexicon] 9#[derive( 10 serde::Serialize, 11 serde::Deserialize, 12 Debug, 13 Clone, 14 PartialEq, 15 Eq, 16 bon::Builder 17)] 18#[serde(rename_all = "camelCase")] 19#[builder(start_fn = new)] 20pub struct CreateAccount<'a> { 21 ///Pre-existing atproto DID, being imported to a new account. 22 #[serde(skip_serializing_if = "std::option::Option::is_none")] 23 #[serde(borrow)] 24 pub did: std::option::Option<jacquard_common::types::string::Did<'a>>, 25 #[serde(skip_serializing_if = "std::option::Option::is_none")] 26 #[serde(borrow)] 27 #[builder(into)] 28 pub email: std::option::Option<jacquard_common::CowStr<'a>>, 29 ///Requested handle for the account. 30 #[serde(borrow)] 31 pub handle: jacquard_common::types::string::Handle<'a>, 32 #[serde(skip_serializing_if = "std::option::Option::is_none")] 33 #[serde(borrow)] 34 #[builder(into)] 35 pub invite_code: std::option::Option<jacquard_common::CowStr<'a>>, 36 ///Initial account password. May need to meet instance-specific password strength requirements. 37 #[serde(skip_serializing_if = "std::option::Option::is_none")] 38 #[serde(borrow)] 39 #[builder(into)] 40 pub password: std::option::Option<jacquard_common::CowStr<'a>>, 41 ///A signed DID PLC operation to be submitted as part of importing an existing account to this instance. NOTE: this optional field may be updated when full account migration is implemented. 42 #[serde(skip_serializing_if = "std::option::Option::is_none")] 43 #[serde(borrow)] 44 pub plc_op: std::option::Option<jacquard_common::types::value::Data<'a>>, 45 ///DID PLC rotation key (aka, recovery key) to be included in PLC creation operation. 46 #[serde(skip_serializing_if = "std::option::Option::is_none")] 47 #[serde(borrow)] 48 #[builder(into)] 49 pub recovery_key: std::option::Option<jacquard_common::CowStr<'a>>, 50 #[serde(skip_serializing_if = "std::option::Option::is_none")] 51 #[serde(borrow)] 52 #[builder(into)] 53 pub verification_code: std::option::Option<jacquard_common::CowStr<'a>>, 54 #[serde(skip_serializing_if = "std::option::Option::is_none")] 55 #[serde(borrow)] 56 #[builder(into)] 57 pub verification_phone: std::option::Option<jacquard_common::CowStr<'a>>, 58 #[serde(flatten)] 59 #[serde(borrow)] 60 #[builder(default)] 61 pub extra_data: ::std::collections::BTreeMap< 62 ::jacquard_common::smol_str::SmolStr, 63 ::jacquard_common::types::value::Data<'a>, 64 >, 65} 66 67impl jacquard_common::IntoStatic for CreateAccount<'_> { 68 type Output = CreateAccount<'static>; 69 fn into_static(self) -> Self::Output { 70 CreateAccount { 71 did: self.did.into_static(), 72 email: self.email.into_static(), 73 handle: self.handle.into_static(), 74 invite_code: self.invite_code.into_static(), 75 password: self.password.into_static(), 76 plc_op: self.plc_op.into_static(), 77 recovery_key: self.recovery_key.into_static(), 78 verification_code: self.verification_code.into_static(), 79 verification_phone: self.verification_phone.into_static(), 80 extra_data: self.extra_data.into_static(), 81 } 82 } 83} 84 85#[jacquard_derive::lexicon] 86#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] 87#[serde(rename_all = "camelCase")] 88pub struct CreateAccountOutput<'a> { 89 #[serde(borrow)] 90 pub access_jwt: jacquard_common::CowStr<'a>, 91 ///The DID of the new account. 92 #[serde(borrow)] 93 pub did: jacquard_common::types::string::Did<'a>, 94 ///Complete DID document. 95 #[serde(skip_serializing_if = "std::option::Option::is_none")] 96 #[serde(borrow)] 97 pub did_doc: std::option::Option<jacquard_common::types::value::Data<'a>>, 98 #[serde(borrow)] 99 pub handle: jacquard_common::types::string::Handle<'a>, 100 #[serde(borrow)] 101 pub refresh_jwt: jacquard_common::CowStr<'a>, 102} 103 104impl jacquard_common::IntoStatic for CreateAccountOutput<'_> { 105 type Output = CreateAccountOutput<'static>; 106 fn into_static(self) -> Self::Output { 107 CreateAccountOutput { 108 access_jwt: self.access_jwt.into_static(), 109 did: self.did.into_static(), 110 did_doc: self.did_doc.into_static(), 111 handle: self.handle.into_static(), 112 refresh_jwt: self.refresh_jwt.into_static(), 113 extra_data: self.extra_data.into_static(), 114 } 115 } 116} 117 118#[jacquard_derive::open_union] 119#[derive( 120 serde::Serialize, 121 serde::Deserialize, 122 Debug, 123 Clone, 124 PartialEq, 125 Eq, 126 thiserror::Error, 127 miette::Diagnostic 128)] 129#[serde(tag = "error", content = "message")] 130#[serde(bound(deserialize = "'de: 'a"))] 131pub enum CreateAccountError<'a> { 132 #[serde(rename = "InvalidHandle")] 133 InvalidHandle(std::option::Option<String>), 134 #[serde(rename = "InvalidPassword")] 135 InvalidPassword(std::option::Option<String>), 136 #[serde(rename = "InvalidInviteCode")] 137 InvalidInviteCode(std::option::Option<String>), 138 #[serde(rename = "HandleNotAvailable")] 139 HandleNotAvailable(std::option::Option<String>), 140 #[serde(rename = "UnsupportedDomain")] 141 UnsupportedDomain(std::option::Option<String>), 142 #[serde(rename = "UnresolvableDid")] 143 UnresolvableDid(std::option::Option<String>), 144 #[serde(rename = "IncompatibleDidDoc")] 145 IncompatibleDidDoc(std::option::Option<String>), 146} 147 148impl std::fmt::Display for CreateAccountError<'_> { 149 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 150 match self { 151 Self::InvalidHandle(msg) => { 152 write!(f, "InvalidHandle")?; 153 if let Some(msg) = msg { 154 write!(f, ": {}", msg)?; 155 } 156 Ok(()) 157 } 158 Self::InvalidPassword(msg) => { 159 write!(f, "InvalidPassword")?; 160 if let Some(msg) = msg { 161 write!(f, ": {}", msg)?; 162 } 163 Ok(()) 164 } 165 Self::InvalidInviteCode(msg) => { 166 write!(f, "InvalidInviteCode")?; 167 if let Some(msg) = msg { 168 write!(f, ": {}", msg)?; 169 } 170 Ok(()) 171 } 172 Self::HandleNotAvailable(msg) => { 173 write!(f, "HandleNotAvailable")?; 174 if let Some(msg) = msg { 175 write!(f, ": {}", msg)?; 176 } 177 Ok(()) 178 } 179 Self::UnsupportedDomain(msg) => { 180 write!(f, "UnsupportedDomain")?; 181 if let Some(msg) = msg { 182 write!(f, ": {}", msg)?; 183 } 184 Ok(()) 185 } 186 Self::UnresolvableDid(msg) => { 187 write!(f, "UnresolvableDid")?; 188 if let Some(msg) = msg { 189 write!(f, ": {}", msg)?; 190 } 191 Ok(()) 192 } 193 Self::IncompatibleDidDoc(msg) => { 194 write!(f, "IncompatibleDidDoc")?; 195 if let Some(msg) = msg { 196 write!(f, ": {}", msg)?; 197 } 198 Ok(()) 199 } 200 Self::Unknown(err) => write!(f, "Unknown error: {:?}", err), 201 } 202 } 203} 204 205impl jacquard_common::IntoStatic for CreateAccountError<'_> { 206 type Output = CreateAccountError<'static>; 207 fn into_static(self) -> Self::Output { 208 match self { 209 CreateAccountError::InvalidHandle(v) => { 210 CreateAccountError::InvalidHandle(v.into_static()) 211 } 212 CreateAccountError::InvalidPassword(v) => { 213 CreateAccountError::InvalidPassword(v.into_static()) 214 } 215 CreateAccountError::InvalidInviteCode(v) => { 216 CreateAccountError::InvalidInviteCode(v.into_static()) 217 } 218 CreateAccountError::HandleNotAvailable(v) => { 219 CreateAccountError::HandleNotAvailable(v.into_static()) 220 } 221 CreateAccountError::UnsupportedDomain(v) => { 222 CreateAccountError::UnsupportedDomain(v.into_static()) 223 } 224 CreateAccountError::UnresolvableDid(v) => { 225 CreateAccountError::UnresolvableDid(v.into_static()) 226 } 227 CreateAccountError::IncompatibleDidDoc(v) => { 228 CreateAccountError::IncompatibleDidDoc(v.into_static()) 229 } 230 CreateAccountError::Unknown(v) => { 231 CreateAccountError::Unknown(v.into_static()) 232 } 233 } 234 } 235} 236 237impl jacquard_common::types::xrpc::XrpcRequest for CreateAccount<'_> { 238 const NSID: &'static str = "com.atproto.server.createAccount"; 239 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 240 "application/json", 241 ); 242 const OUTPUT_ENCODING: &'static str = "application/json"; 243 type Output<'de> = CreateAccountOutput<'de>; 244 type Err<'de> = CreateAccountError<'de>; 245}