jacquard_api/com_atproto/server/
update_email.rs

1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: com.atproto.server.updateEmail
4//
5// This file was automatically generated from Lexicon schemas.
6// Any manual changes will be overwritten on the next regeneration.
7
8#[jacquard_derive::lexicon]
9#[derive(
10    serde::Serialize,
11    serde::Deserialize,
12    Debug,
13    Clone,
14    PartialEq,
15    Eq,
16    bon::Builder
17)]
18#[serde(rename_all = "camelCase")]
19#[builder(start_fn = new)]
20pub struct UpdateEmail<'a> {
21    #[serde(borrow)]
22    #[builder(into)]
23    pub email: jacquard_common::CowStr<'a>,
24    #[serde(skip_serializing_if = "std::option::Option::is_none")]
25    pub email_auth_factor: std::option::Option<bool>,
26    ///Requires a token from com.atproto.sever.requestEmailUpdate if the account's email has been confirmed.
27    #[serde(skip_serializing_if = "std::option::Option::is_none")]
28    #[serde(borrow)]
29    #[builder(into)]
30    pub token: std::option::Option<jacquard_common::CowStr<'a>>,
31    #[serde(flatten)]
32    #[serde(borrow)]
33    #[builder(default)]
34    pub extra_data: ::std::collections::BTreeMap<
35        ::jacquard_common::smol_str::SmolStr,
36        ::jacquard_common::types::value::Data<'a>,
37    >,
38}
39
40impl jacquard_common::IntoStatic for UpdateEmail<'_> {
41    type Output = UpdateEmail<'static>;
42    fn into_static(self) -> Self::Output {
43        UpdateEmail {
44            email: self.email.into_static(),
45            email_auth_factor: self.email_auth_factor.into_static(),
46            token: self.token.into_static(),
47            extra_data: self.extra_data.into_static(),
48        }
49    }
50}
51
52#[jacquard_derive::open_union]
53#[derive(
54    serde::Serialize,
55    serde::Deserialize,
56    Debug,
57    Clone,
58    PartialEq,
59    Eq,
60    thiserror::Error,
61    miette::Diagnostic
62)]
63#[serde(tag = "error", content = "message")]
64#[serde(bound(deserialize = "'de: 'a"))]
65pub enum UpdateEmailError<'a> {
66    #[serde(rename = "ExpiredToken")]
67    ExpiredToken(std::option::Option<String>),
68    #[serde(rename = "InvalidToken")]
69    InvalidToken(std::option::Option<String>),
70    #[serde(rename = "TokenRequired")]
71    TokenRequired(std::option::Option<String>),
72}
73
74impl std::fmt::Display for UpdateEmailError<'_> {
75    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
76        match self {
77            Self::ExpiredToken(msg) => {
78                write!(f, "ExpiredToken")?;
79                if let Some(msg) = msg {
80                    write!(f, ": {}", msg)?;
81                }
82                Ok(())
83            }
84            Self::InvalidToken(msg) => {
85                write!(f, "InvalidToken")?;
86                if let Some(msg) = msg {
87                    write!(f, ": {}", msg)?;
88                }
89                Ok(())
90            }
91            Self::TokenRequired(msg) => {
92                write!(f, "TokenRequired")?;
93                if let Some(msg) = msg {
94                    write!(f, ": {}", msg)?;
95                }
96                Ok(())
97            }
98            Self::Unknown(err) => write!(f, "Unknown error: {:?}", err),
99        }
100    }
101}
102
103impl jacquard_common::IntoStatic for UpdateEmailError<'_> {
104    type Output = UpdateEmailError<'static>;
105    fn into_static(self) -> Self::Output {
106        match self {
107            UpdateEmailError::ExpiredToken(v) => {
108                UpdateEmailError::ExpiredToken(v.into_static())
109            }
110            UpdateEmailError::InvalidToken(v) => {
111                UpdateEmailError::InvalidToken(v.into_static())
112            }
113            UpdateEmailError::TokenRequired(v) => {
114                UpdateEmailError::TokenRequired(v.into_static())
115            }
116            UpdateEmailError::Unknown(v) => UpdateEmailError::Unknown(v.into_static()),
117        }
118    }
119}
120
121impl jacquard_common::types::xrpc::XrpcRequest for UpdateEmail<'_> {
122    const NSID: &'static str = "com.atproto.server.updateEmail";
123    const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure(
124        "application/json",
125    );
126    const OUTPUT_ENCODING: &'static str = "application/json";
127    type Output<'de> = ();
128    type Err<'de> = UpdateEmailError<'de>;
129}