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<'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}