clerk_rs/apis/
actor_tokens_api.rs

1/*
2 * Clerk Backend API
3 *
4 * The Clerk REST Backend API, meant to be accessed by backend servers. Please see https://clerk.com/docs for more information.
5 *
6 * The version of the OpenAPI document: v1
7 * Contact: support@clerk.com
8 * Generated by: https://openapi-generator.tech
9 */
10
11use reqwest;
12
13use super::Error;
14use crate::{apis::ResponseContent, clerk::Clerk};
15
16/// struct for typed errors of method [`create_actor_token`]
17#[derive(Debug, Clone, Serialize, Deserialize)]
18#[serde(untagged)]
19pub enum CreateActorTokenError {
20	Status400(crate::models::ClerkErrors),
21	Status402(crate::models::ClerkErrors),
22	Status422(crate::models::ClerkErrors),
23	UnknownValue(serde_json::Value),
24}
25
26/// struct for typed errors of method [`revoke_actor_token`]
27#[derive(Debug, Clone, Serialize, Deserialize)]
28#[serde(untagged)]
29pub enum RevokeActorTokenError {
30	Status400(crate::models::ClerkErrors),
31	Status404(crate::models::ClerkErrors),
32	UnknownValue(serde_json::Value),
33}
34
35pub struct ActorToken;
36
37impl ActorToken {
38	/// Create an actor token that can be used to impersonate the given user.
39	pub async fn create(
40		clerk_client: &Clerk,
41		create_actor_token_request: Option<crate::models::CreateActorTokenRequest>,
42	) -> Result<crate::models::ActorToken, Error<CreateActorTokenError>> {
43		let local_var_configuration = &clerk_client.config;
44
45		let local_var_client = &local_var_configuration.client;
46
47		let local_var_uri_str = format!("{}/actor_tokens", local_var_configuration.base_path);
48		let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
49
50		if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
51			local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent);
52		}
53		local_var_req_builder = local_var_req_builder.json(&create_actor_token_request);
54
55		let local_var_req = local_var_req_builder.build()?;
56		let local_var_resp = local_var_client.execute(local_var_req).await?;
57
58		let local_var_status = local_var_resp.status();
59
60		if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
61			local_var_resp.json().await.map_err(Error::from)
62		} else {
63			let local_var_content = local_var_resp.text().await?;
64
65			let local_var_entity: Option<CreateActorTokenError> = serde_json::from_str(&local_var_content).ok();
66			let local_var_error = ResponseContent {
67				status: local_var_status,
68				content: local_var_content,
69				entity: local_var_entity,
70			};
71			Err(Error::ResponseError(local_var_error))
72		}
73	}
74
75	/// Revokes a pending actor token.
76	pub async fn revoke(clerk_client: &Clerk, actor_token_id: &str) -> Result<crate::models::ActorToken, Error<RevokeActorTokenError>> {
77		let local_var_configuration = &clerk_client.config;
78
79		let local_var_client = &local_var_configuration.client;
80
81		let local_var_uri_str = format!(
82			"{}/actor_tokens/{actor_token_id}/revoke",
83			local_var_configuration.base_path,
84			actor_token_id = crate::apis::urlencode(actor_token_id)
85		);
86		let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
87
88		if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
89			local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
90		}
91		if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
92			local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
93		};
94
95		let local_var_req = local_var_req_builder.build()?;
96		let local_var_resp = local_var_client.execute(local_var_req).await?;
97
98		let local_var_status = local_var_resp.status();
99		let local_var_content = local_var_resp.text().await?;
100
101		if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
102			serde_json::from_str(&local_var_content).map_err(Error::from)
103		} else {
104			let local_var_entity: Option<RevokeActorTokenError> = serde_json::from_str(&local_var_content).ok();
105			let local_var_error = ResponseContent {
106				status: local_var_status,
107				content: local_var_content,
108				entity: local_var_entity,
109			};
110			Err(Error::ResponseError(local_var_error))
111		}
112	}
113}