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}