jacquard_api/com_atproto/server/
reset_password.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 ResetPassword<'a> {
21 #[serde(borrow)]
22 pub password: CowStr<'a>,
23 #[serde(borrow)]
24 pub token: CowStr<'a>,
25}
26
27
28#[open_union]
29#[derive(
30 Serialize,
31 Deserialize,
32 Debug,
33 Clone,
34 PartialEq,
35 Eq,
36 thiserror::Error,
37 miette::Diagnostic,
38 IntoStatic
39)]
40
41#[serde(tag = "error", content = "message")]
42#[serde(bound(deserialize = "'de: 'a"))]
43pub enum ResetPasswordError<'a> {
44 #[serde(rename = "ExpiredToken")]
45 ExpiredToken(Option<CowStr<'a>>),
46 #[serde(rename = "InvalidToken")]
47 InvalidToken(Option<CowStr<'a>>),
48}
49
50impl core::fmt::Display for ResetPasswordError<'_> {
51 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
52 match self {
53 Self::ExpiredToken(msg) => {
54 write!(f, "ExpiredToken")?;
55 if let Some(msg) = msg {
56 write!(f, ": {}", msg)?;
57 }
58 Ok(())
59 }
60 Self::InvalidToken(msg) => {
61 write!(f, "InvalidToken")?;
62 if let Some(msg) = msg {
63 write!(f, ": {}", msg)?;
64 }
65 Ok(())
66 }
67 Self::Unknown(err) => write!(f, "Unknown error: {:?}", err),
68 }
69 }
70}
71
72pub struct ResetPasswordResponse;
74impl jacquard_common::xrpc::XrpcResp for ResetPasswordResponse {
75 const NSID: &'static str = "com.atproto.server.resetPassword";
76 const ENCODING: &'static str = "application/json";
77 type Output<'de> = ();
78 type Err<'de> = ResetPasswordError<'de>;
79}
80
81impl<'a> jacquard_common::xrpc::XrpcRequest for ResetPassword<'a> {
82 const NSID: &'static str = "com.atproto.server.resetPassword";
83 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
84 "application/json",
85 );
86 type Response = ResetPasswordResponse;
87}
88
89pub struct ResetPasswordRequest;
91impl jacquard_common::xrpc::XrpcEndpoint for ResetPasswordRequest {
92 const PATH: &'static str = "/xrpc/com.atproto.server.resetPassword";
93 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
94 "application/json",
95 );
96 type Request<'de> = ResetPassword<'de>;
97 type Response = ResetPasswordResponse;
98}