use super::*;
#[derive(Serialize)]
struct Request {
email: String,
sender_name: String,
callback: String,
}
#[derive(Deserialize)]
struct Response {
id: i32,
}
#[derive(Debug)]
pub enum Returns {
InvalidEmail,
Valid(i32),
}
impl Client {
pub async fn reset_password_request(
&self,
email: String,
sender_name: String,
callback: String,
) -> Result<Returns, Box<dyn std::error::Error>> {
let res = req()
.post(self.endpoint("/v1/users/reset", vec![]))
.json(&Request {
email,
sender_name,
callback,
})
.send()
.await?;
match res.status() {
StatusCode::NOT_FOUND => Ok(Returns::InvalidEmail),
StatusCode::OK => Ok(Returns::Valid(res.json::<Response>().await?.id)),
_ => Err("Unknown Response Status Code".into()),
}
}
}