platz_sdk/resources/
user_tokens.rs

1use crate::client::PlatzClient;
2use anyhow::Result;
3use chrono::prelude::*;
4use kv_derive::{prelude::*, IntoVec};
5use serde::{Deserialize, Serialize};
6use uuid::Uuid;
7
8#[derive(Debug, Deserialize, Clone)]
9pub struct UserToken {
10    pub id: Uuid,
11    pub user_id: Uuid,
12    pub created_at: DateTime<Utc>,
13}
14
15#[derive(Default, IntoVec)]
16pub struct UserTokenFilters {
17    #[kv(optional)]
18    pub user_id: Option<Uuid>,
19}
20
21#[derive(Debug, Serialize)]
22pub struct NewUserToken {
23    pub user_id: Option<Uuid>,
24}
25
26#[derive(Debug, Deserialize)]
27pub struct UserTokenCreationResponse {
28    pub created_token: String,
29}
30
31impl PlatzClient {
32    pub async fn user_tokens(&self, filters: UserTokenFilters) -> Result<Vec<UserToken>> {
33        Ok(self
34            .request(reqwest::Method::GET, "/api/v2/user-tokens")
35            .add_to_query(filters.into_vec())
36            .paginated()
37            .await?)
38    }
39
40    pub async fn user_token(&self, token_id: Uuid) -> Result<UserToken> {
41        Ok(self
42            .request(
43                reqwest::Method::GET,
44                format!("/api/v2/user-tokens/{token_id}"),
45            )
46            .send()
47            .await?)
48    }
49
50    pub async fn create_user_token(
51        &self,
52        new_user_token: NewUserToken,
53    ) -> Result<UserTokenCreationResponse> {
54        Ok(self
55            .request(reqwest::Method::POST, "/api/v2/user-tokens")
56            .send_with_body(new_user_token)
57            .await?)
58    }
59
60    pub async fn delete_user_token(&self, token_id: Uuid) -> Result<()> {
61        Ok(self
62            .request(
63                reqwest::Method::DELETE,
64                format!("/api/v2/user-tokens/{token_id}"),
65            )
66            .send_with_no_response()
67            .await?)
68    }
69}