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    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<'de> jacquard_common::xrpc::XrpcRequest<'de> for CheckHandleAvailability<'de> {
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}