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