clerk_rs/apis/
webhooks_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_svix_app`]
17#[derive(Debug, Clone, Serialize, Deserialize)]
18#[serde(untagged)]
19pub enum CreateSvixAppError {
20	Status400(crate::models::ClerkErrors),
21	UnknownValue(serde_json::Value),
22}
23
24/// struct for typed errors of method [`delete_svix_app`]
25#[derive(Debug, Clone, Serialize, Deserialize)]
26#[serde(untagged)]
27pub enum DeleteSvixAppError {
28	Status400(crate::models::ClerkErrors),
29	UnknownValue(serde_json::Value),
30}
31
32/// struct for typed errors of method [`generate_svix_auth_url`]
33#[derive(Debug, Clone, Serialize, Deserialize)]
34#[serde(untagged)]
35pub enum GenerateSvixAuthUrlError {
36	Status400(crate::models::ClerkErrors),
37	UnknownValue(serde_json::Value),
38}
39
40pub struct Webhooks;
41
42impl Webhooks {
43	/// Create a Svix app and associate it with the current instance
44	pub async fn create_svix_app(clerk_client: &Clerk) -> Result<crate::models::SvixUrl, Error<CreateSvixAppError>> {
45		let local_var_configuration = &clerk_client.config;
46
47		let local_var_client = &local_var_configuration.client;
48
49		let local_var_uri_str = format!("{}/webhooks/svix", local_var_configuration.base_path);
50		let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
51
52		if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
53			local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
54		}
55
56		let local_var_req = local_var_req_builder.build()?;
57		let local_var_resp = local_var_client.execute(local_var_req).await?;
58
59		let local_var_status = local_var_resp.status();
60		let local_var_content = local_var_resp.text().await?;
61
62		if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
63			serde_json::from_str(&local_var_content).map_err(Error::from)
64		} else {
65			let local_var_entity: Option<CreateSvixAppError> = 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	/// Delete a Svix app and disassociate it from the current instance
76	pub async fn delete_svix_app(clerk_client: &Clerk) -> Result<(), Error<DeleteSvixAppError>> {
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!("{}/webhooks/svix", local_var_configuration.base_path);
82		let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
83
84		if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
85			local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
86		}
87
88		let local_var_req = local_var_req_builder.build()?;
89		let local_var_resp = local_var_client.execute(local_var_req).await?;
90
91		let local_var_status = local_var_resp.status();
92		let local_var_content = local_var_resp.text().await?;
93
94		if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
95			Ok(())
96		} else {
97			let local_var_entity: Option<DeleteSvixAppError> = serde_json::from_str(&local_var_content).ok();
98			let local_var_error = ResponseContent {
99				status: local_var_status,
100				content: local_var_content,
101				entity: local_var_entity,
102			};
103			Err(Error::ResponseError(local_var_error))
104		}
105	}
106
107	/// Generate a new url for accessing the Svix's management dashboard for that particular instance
108	pub async fn generate_svix_auth_url(clerk_client: &Clerk) -> Result<crate::models::SvixUrl, Error<GenerateSvixAuthUrlError>> {
109		let local_var_configuration = &clerk_client.config;
110
111		let local_var_client = &local_var_configuration.client;
112
113		let local_var_uri_str = format!("{}/webhooks/svix_url", local_var_configuration.base_path);
114		let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
115
116		if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
117			local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
118		}
119
120		let local_var_req = local_var_req_builder.build()?;
121		let local_var_resp = local_var_client.execute(local_var_req).await?;
122
123		let local_var_status = local_var_resp.status();
124		let local_var_content = local_var_resp.text().await?;
125
126		if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
127			serde_json::from_str(&local_var_content).map_err(Error::from)
128		} else {
129			let local_var_entity: Option<GenerateSvixAuthUrlError> = serde_json::from_str(&local_var_content).ok();
130			let local_var_error = ResponseContent {
131				status: local_var_status,
132				content: local_var_content,
133				entity: local_var_entity,
134			};
135			Err(Error::ResponseError(local_var_error))
136		}
137	}
138}