platz_sdk/resources/
user_tokens.rs1use 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}