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