jacquard_api/com_atproto/server/
update_email.rs1#[allow(unused_imports)]
9use alloc::collections::BTreeMap;
10
11#[allow(unused_imports)]
12use core::marker::PhantomData;
13use jacquard_common::CowStr;
14use jacquard_derive::{IntoStatic, lexicon, open_union};
15use serde::{Serialize, Deserialize};
16
17#[lexicon]
18#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)]
19#[serde(rename_all = "camelCase")]
20pub struct UpdateEmail<'a> {
21 #[serde(borrow)]
22 pub email: CowStr<'a>,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub email_auth_factor: Option<bool>,
25 #[serde(skip_serializing_if = "Option::is_none")]
27 #[serde(borrow)]
28 pub token: Option<CowStr<'a>>,
29}
30
31
32#[open_union]
33#[derive(
34 Serialize,
35 Deserialize,
36 Debug,
37 Clone,
38 PartialEq,
39 Eq,
40 thiserror::Error,
41 miette::Diagnostic,
42 IntoStatic
43)]
44
45#[serde(tag = "error", content = "message")]
46#[serde(bound(deserialize = "'de: 'a"))]
47pub enum UpdateEmailError<'a> {
48 #[serde(rename = "ExpiredToken")]
49 ExpiredToken(Option<CowStr<'a>>),
50 #[serde(rename = "InvalidToken")]
51 InvalidToken(Option<CowStr<'a>>),
52 #[serde(rename = "TokenRequired")]
53 TokenRequired(Option<CowStr<'a>>),
54}
55
56impl core::fmt::Display for UpdateEmailError<'_> {
57 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
58 match self {
59 Self::ExpiredToken(msg) => {
60 write!(f, "ExpiredToken")?;
61 if let Some(msg) = msg {
62 write!(f, ": {}", msg)?;
63 }
64 Ok(())
65 }
66 Self::InvalidToken(msg) => {
67 write!(f, "InvalidToken")?;
68 if let Some(msg) = msg {
69 write!(f, ": {}", msg)?;
70 }
71 Ok(())
72 }
73 Self::TokenRequired(msg) => {
74 write!(f, "TokenRequired")?;
75 if let Some(msg) = msg {
76 write!(f, ": {}", msg)?;
77 }
78 Ok(())
79 }
80 Self::Unknown(err) => write!(f, "Unknown error: {:?}", err),
81 }
82 }
83}
84
85pub struct UpdateEmailResponse;
87impl jacquard_common::xrpc::XrpcResp for UpdateEmailResponse {
88 const NSID: &'static str = "com.atproto.server.updateEmail";
89 const ENCODING: &'static str = "application/json";
90 type Output<'de> = ();
91 type Err<'de> = UpdateEmailError<'de>;
92}
93
94impl<'a> jacquard_common::xrpc::XrpcRequest for UpdateEmail<'a> {
95 const NSID: &'static str = "com.atproto.server.updateEmail";
96 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
97 "application/json",
98 );
99 type Response = UpdateEmailResponse;
100}
101
102pub struct UpdateEmailRequest;
104impl jacquard_common::xrpc::XrpcEndpoint for UpdateEmailRequest {
105 const PATH: &'static str = "/xrpc/com.atproto.server.updateEmail";
106 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
107 "application/json",
108 );
109 type Request<'de> = UpdateEmail<'de>;
110 type Response = UpdateEmailResponse;
111}