jacquard_api/com_atproto/temp/
check_handle_availability.rs

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