use http::Method;
use serde::Serialize;
use crate::{api, auth::Authenticated, query::DefaultModel, Endpoint};
#[derive(Clone, Debug, Eq, Ord, Hash, PartialEq, PartialOrd, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct ChangePassword {
pub old_password: String,
pub new_password: String,
}
impl ChangePassword {
pub fn new(old: impl Into<String>, new: impl Into<String>) -> Self {
Self {
old_password: old.into(),
new_password: new.into(),
}
}
}
impl Endpoint for ChangePassword {
type AccessControl = Authenticated;
fn method(&self) -> Method {
Method::POST
}
fn endpoint(&self) -> std::borrow::Cow<'static, str> {
"auth/change-password".into()
}
fn body(&self) -> Result<Option<(&'static str, Vec<u8>)>, crate::BodyError> {
Ok(Some((
api::mime_types::JSON,
serde_json::to_string(self)?.into_bytes(),
)))
}
}
impl DefaultModel for ChangePassword {
type Model = ();
fn map(data: serde_json::Value) -> Result<Self::Model, serde_json::Error> {
serde_json::from_value(data)
}
}