A better Rust ATProto crate
1// @generated by jacquard-lexicon. DO NOT EDIT. 2// 3// Lexicon: com.atproto.temp.checkHandleAvailability 4// 5// This file was automatically generated from Lexicon schemas. 6// Any manual changes will be overwritten on the next regeneration. 7 8#[derive( 9 serde::Serialize, 10 serde::Deserialize, 11 Debug, 12 Clone, 13 PartialEq, 14 Eq, 15 bon::Builder, 16 jacquard_derive::IntoStatic 17)] 18#[builder(start_fn = new)] 19#[serde(rename_all = "camelCase")] 20pub struct CheckHandleAvailability<'a> { 21 #[serde(skip_serializing_if = "std::option::Option::is_none")] 22 pub birth_date: std::option::Option<jacquard_common::types::string::Datetime>, 23 #[serde(skip_serializing_if = "std::option::Option::is_none")] 24 #[serde(borrow)] 25 #[builder(into)] 26 pub email: std::option::Option<jacquard_common::CowStr<'a>>, 27 #[serde(borrow)] 28 pub handle: jacquard_common::types::string::Handle<'a>, 29} 30 31#[jacquard_derive::lexicon] 32#[derive( 33 serde::Serialize, 34 serde::Deserialize, 35 Debug, 36 Clone, 37 PartialEq, 38 Eq, 39 jacquard_derive::IntoStatic 40)] 41#[serde(rename_all = "camelCase")] 42pub struct CheckHandleAvailabilityOutput<'a> { 43 ///Echo of the input handle. 44 #[serde(borrow)] 45 pub handle: jacquard_common::types::string::Handle<'a>, 46 #[serde(borrow)] 47 pub result: CheckHandleAvailabilityOutputResult<'a>, 48} 49 50#[jacquard_derive::open_union] 51#[derive( 52 serde::Serialize, 53 serde::Deserialize, 54 Debug, 55 Clone, 56 PartialEq, 57 Eq, 58 jacquard_derive::IntoStatic 59)] 60#[serde(tag = "$type")] 61#[serde(bound(deserialize = "'de: 'a"))] 62pub enum CheckHandleAvailabilityOutputResult<'a> { 63 #[serde(rename = "com.atproto.temp.checkHandleAvailability#resultAvailable")] 64 ResultAvailable( 65 Box<crate::com_atproto::temp::check_handle_availability::ResultAvailable<'a>>, 66 ), 67 #[serde(rename = "com.atproto.temp.checkHandleAvailability#resultUnavailable")] 68 ResultUnavailable( 69 Box<crate::com_atproto::temp::check_handle_availability::ResultUnavailable<'a>>, 70 ), 71} 72 73#[jacquard_derive::open_union] 74#[derive( 75 serde::Serialize, 76 serde::Deserialize, 77 Debug, 78 Clone, 79 PartialEq, 80 Eq, 81 thiserror::Error, 82 miette::Diagnostic, 83 jacquard_derive::IntoStatic 84)] 85#[serde(tag = "error", content = "message")] 86#[serde(bound(deserialize = "'de: 'a"))] 87pub enum CheckHandleAvailabilityError<'a> { 88 ///An invalid email was provided. 89 #[serde(rename = "InvalidEmail")] 90 InvalidEmail(std::option::Option<String>), 91} 92 93impl std::fmt::Display for CheckHandleAvailabilityError<'_> { 94 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 95 match self { 96 Self::InvalidEmail(msg) => { 97 write!(f, "InvalidEmail")?; 98 if let Some(msg) = msg { 99 write!(f, ": {}", msg)?; 100 } 101 Ok(()) 102 } 103 Self::Unknown(err) => write!(f, "Unknown error: {:?}", err), 104 } 105 } 106} 107 108///Response type for 109///com.atproto.temp.checkHandleAvailability 110pub struct CheckHandleAvailabilityResponse; 111impl jacquard_common::xrpc::XrpcResp for CheckHandleAvailabilityResponse { 112 const NSID: &'static str = "com.atproto.temp.checkHandleAvailability"; 113 const ENCODING: &'static str = "application/json"; 114 type Output<'de> = CheckHandleAvailabilityOutput<'de>; 115 type Err<'de> = CheckHandleAvailabilityError<'de>; 116} 117 118impl<'a> jacquard_common::xrpc::XrpcRequest for CheckHandleAvailability<'a> { 119 const NSID: &'static str = "com.atproto.temp.checkHandleAvailability"; 120 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query; 121 type Response = CheckHandleAvailabilityResponse; 122} 123 124///Endpoint type for 125///com.atproto.temp.checkHandleAvailability 126pub struct CheckHandleAvailabilityRequest; 127impl jacquard_common::xrpc::XrpcEndpoint for CheckHandleAvailabilityRequest { 128 const PATH: &'static str = "/xrpc/com.atproto.temp.checkHandleAvailability"; 129 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query; 130 type Request<'de> = CheckHandleAvailability<'de>; 131 type Response = CheckHandleAvailabilityResponse; 132} 133 134///Indicates the provided handle is available. 135#[jacquard_derive::lexicon] 136#[derive( 137 serde::Serialize, 138 serde::Deserialize, 139 Debug, 140 Clone, 141 PartialEq, 142 Eq, 143 jacquard_derive::IntoStatic 144)] 145#[serde(rename_all = "camelCase")] 146pub struct ResultAvailable<'a> {} 147///Indicates the provided handle is unavailable and gives suggestions of available handles. 148#[jacquard_derive::lexicon] 149#[derive( 150 serde::Serialize, 151 serde::Deserialize, 152 Debug, 153 Clone, 154 PartialEq, 155 Eq, 156 jacquard_derive::IntoStatic 157)] 158#[serde(rename_all = "camelCase")] 159pub struct ResultUnavailable<'a> { 160 ///List of suggested handles based on the provided inputs. 161 #[serde(borrow)] 162 pub suggestions: Vec< 163 crate::com_atproto::temp::check_handle_availability::Suggestion<'a>, 164 >, 165} 166 167#[jacquard_derive::lexicon] 168#[derive( 169 serde::Serialize, 170 serde::Deserialize, 171 Debug, 172 Clone, 173 PartialEq, 174 Eq, 175 jacquard_derive::IntoStatic 176)] 177#[serde(rename_all = "camelCase")] 178pub struct Suggestion<'a> { 179 #[serde(borrow)] 180 pub handle: jacquard_common::types::string::Handle<'a>, 181 ///Method used to build this suggestion. Should be considered opaque to clients. Can be used for metrics. 182 #[serde(borrow)] 183 pub method: jacquard_common::CowStr<'a>, 184}