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 Default
145)]
146#[serde(rename_all = "camelCase")]
147pub struct ResultAvailable<'a> {}
148/// Indicates the provided handle is unavailable and gives suggestions of available handles.
149#[jacquard_derive::lexicon]
150#[derive(
151 serde::Serialize,
152 serde::Deserialize,
153 Debug,
154 Clone,
155 PartialEq,
156 Eq,
157 jacquard_derive::IntoStatic,
158 bon::Builder
159)]
160#[serde(rename_all = "camelCase")]
161pub struct ResultUnavailable<'a> {
162 /// List of suggested handles based on the provided inputs.
163 #[serde(borrow)]
164 pub suggestions: Vec<
165 crate::com_atproto::temp::check_handle_availability::Suggestion<'a>,
166 >,
167}
168
169#[jacquard_derive::lexicon]
170#[derive(
171 serde::Serialize,
172 serde::Deserialize,
173 Debug,
174 Clone,
175 PartialEq,
176 Eq,
177 jacquard_derive::IntoStatic,
178 bon::Builder
179)]
180#[serde(rename_all = "camelCase")]
181pub struct Suggestion<'a> {
182 #[serde(borrow)]
183 pub handle: jacquard_common::types::string::Handle<'a>,
184 /// Method used to build this suggestion. Should be considered opaque to clients. Can be used for metrics.
185 #[serde(borrow)]
186 #[builder(into)]
187 pub method: jacquard_common::CowStr<'a>,
188}