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