clerk_rs/apis/
email_addresses_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_email_address`]
17#[derive(Debug, Clone, Serialize, Deserialize)]
18#[serde(untagged)]
19pub enum CreateEmailAddressError {
20	Status400(crate::models::ClerkErrors),
21	Status401(crate::models::ClerkErrors),
22	Status403(crate::models::ClerkErrors),
23	Status404(crate::models::ClerkErrors),
24	Status422(crate::models::ClerkErrors),
25	UnknownValue(serde_json::Value),
26}
27
28/// struct for typed errors of method [`delete_email_address`]
29#[derive(Debug, Clone, Serialize, Deserialize)]
30#[serde(untagged)]
31pub enum DeleteEmailAddressError {
32	Status400(crate::models::ClerkErrors),
33	Status401(crate::models::ClerkErrors),
34	Status403(crate::models::ClerkErrors),
35	Status404(crate::models::ClerkErrors),
36	UnknownValue(serde_json::Value),
37}
38
39/// struct for typed errors of method [`get_email_address`]
40#[derive(Debug, Clone, Serialize, Deserialize)]
41#[serde(untagged)]
42pub enum GetEmailAddressError {
43	Status400(crate::models::ClerkErrors),
44	Status401(crate::models::ClerkErrors),
45	Status403(crate::models::ClerkErrors),
46	Status404(crate::models::ClerkErrors),
47	UnknownValue(serde_json::Value),
48}
49
50/// struct for typed errors of method [`update_email_address`]
51#[derive(Debug, Clone, Serialize, Deserialize)]
52#[serde(untagged)]
53pub enum UpdateEmailAddressError {
54	Status400(crate::models::ClerkErrors),
55	Status401(crate::models::ClerkErrors),
56	Status403(crate::models::ClerkErrors),
57	Status404(crate::models::ClerkErrors),
58	UnknownValue(serde_json::Value),
59}
60
61pub struct EmailAddresses;
62
63impl EmailAddresses {
64	/// Create a new email address
65	pub async fn create_email_address(
66		clerk_client: &Clerk,
67		create_email_address_request: Option<crate::models::CreateEmailAddressRequest>,
68	) -> Result<crate::models::EmailAddress, Error<CreateEmailAddressError>> {
69		let local_var_configuration = &clerk_client.config;
70
71		let local_var_client = &local_var_configuration.client;
72
73		let local_var_uri_str = format!("{}/email_addresses", local_var_configuration.base_path);
74		let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
75
76		if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
77			local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
78		}
79
80		local_var_req_builder = local_var_req_builder.json(&create_email_address_request);
81
82		let local_var_req = local_var_req_builder.build()?;
83		let local_var_resp = local_var_client.execute(local_var_req).await?;
84
85		let local_var_status = local_var_resp.status();
86		let local_var_content = local_var_resp.text().await?;
87
88		if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
89			serde_json::from_str(&local_var_content).map_err(Error::from)
90		} else {
91			let local_var_entity: Option<CreateEmailAddressError> = serde_json::from_str(&local_var_content).ok();
92			let local_var_error = ResponseContent {
93				status: local_var_status,
94				content: local_var_content,
95				entity: local_var_entity,
96			};
97			Err(Error::ResponseError(local_var_error))
98		}
99	}
100
101	/// Delete the email address with the given ID
102	pub async fn delete_email_address(
103		clerk_client: &Clerk,
104		email_address_id: &str,
105	) -> Result<crate::models::DeletedObject, Error<DeleteEmailAddressError>> {
106		let local_var_configuration = &clerk_client.config;
107
108		let local_var_client = &local_var_configuration.client;
109
110		let local_var_uri_str = format!(
111			"{}/email_addresses/{email_address_id}",
112			local_var_configuration.base_path,
113			email_address_id = crate::apis::urlencode(email_address_id)
114		);
115		let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
116
117		if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
118			local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
119		}
120
121		let local_var_req = local_var_req_builder.build()?;
122		let local_var_resp = local_var_client.execute(local_var_req).await?;
123
124		let local_var_status = local_var_resp.status();
125		let local_var_content = local_var_resp.text().await?;
126
127		if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
128			serde_json::from_str(&local_var_content).map_err(Error::from)
129		} else {
130			let local_var_entity: Option<DeleteEmailAddressError> = serde_json::from_str(&local_var_content).ok();
131			let local_var_error = ResponseContent {
132				status: local_var_status,
133				content: local_var_content,
134				entity: local_var_entity,
135			};
136			Err(Error::ResponseError(local_var_error))
137		}
138	}
139
140	/// Returns the details of an email address.
141	pub async fn get_email_address(clerk_client: &Clerk, email_address_id: &str) -> Result<crate::models::EmailAddress, Error<GetEmailAddressError>> {
142		let local_var_configuration = &clerk_client.config;
143
144		let local_var_client = &local_var_configuration.client;
145
146		let local_var_uri_str = format!(
147			"{}/email_addresses/{email_address_id}",
148			local_var_configuration.base_path,
149			email_address_id = crate::apis::urlencode(email_address_id)
150		);
151		let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
152
153		if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
154			local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
155		}
156
157		let local_var_req = local_var_req_builder.build()?;
158		let local_var_resp = local_var_client.execute(local_var_req).await?;
159
160		let local_var_status = local_var_resp.status();
161		let local_var_content = local_var_resp.text().await?;
162
163		if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
164			serde_json::from_str(&local_var_content).map_err(Error::from)
165		} else {
166			let local_var_entity: Option<GetEmailAddressError> = serde_json::from_str(&local_var_content).ok();
167			let local_var_error = ResponseContent {
168				status: local_var_status,
169				content: local_var_content,
170				entity: local_var_entity,
171			};
172			Err(Error::ResponseError(local_var_error))
173		}
174	}
175
176	/// Updates an email address.
177	pub async fn update_email_address(
178		clerk_client: &Clerk,
179		email_address_id: &str,
180		update_email_address_request: Option<crate::models::UpdateEmailAddressRequest>,
181	) -> Result<crate::models::EmailAddress, Error<UpdateEmailAddressError>> {
182		let local_var_configuration = &clerk_client.config;
183
184		let local_var_client = &local_var_configuration.client;
185
186		let local_var_uri_str = format!(
187			"{}/email_addresses/{email_address_id}",
188			local_var_configuration.base_path,
189			email_address_id = crate::apis::urlencode(email_address_id)
190		);
191		let mut local_var_req_builder = local_var_client.request(reqwest::Method::PATCH, local_var_uri_str.as_str());
192
193		if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
194			local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
195		}
196
197		local_var_req_builder = local_var_req_builder.json(&update_email_address_request);
198
199		let local_var_req = local_var_req_builder.build()?;
200		let local_var_resp = local_var_client.execute(local_var_req).await?;
201
202		let local_var_status = local_var_resp.status();
203		let local_var_content = local_var_resp.text().await?;
204
205		if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
206			serde_json::from_str(&local_var_content).map_err(Error::from)
207		} else {
208			let local_var_entity: Option<UpdateEmailAddressError> = serde_json::from_str(&local_var_content).ok();
209			let local_var_error = ResponseContent {
210				status: local_var_status,
211				content: local_var_content,
212				entity: local_var_entity,
213			};
214			Err(Error::ResponseError(local_var_error))
215		}
216	}
217}