pocketbase_rs/records/auth/
request_verification.rs

1use std::collections::HashMap;
2
3use crate::Collection;
4use crate::error::RequestError;
5
6impl<'a> Collection<'a> {
7    /// Sends users account verification request.
8    ///
9    /// # Example
10    /// ```rust,ignore
11    /// pb.collection("users")
12    ///     .request_verification("test@example.com")
13    ///     .await?;
14    /// ```
15    pub async fn request_verification(&self, email: &'a str) -> Result<(), RequestError> {
16        let url = format!(
17            "{}/api/collections/{}/request-verification",
18            self.client.base_url, self.name
19        );
20
21        let email: HashMap<String, String> = HashMap::from([("email".to_string(), email.into())]);
22
23        let request = (self.client.request_post_json(&url, &email)).send().await;
24
25        match request {
26            Ok(response) => match response.status() {
27                reqwest::StatusCode::NO_CONTENT => Ok(()),
28                reqwest::StatusCode::BAD_REQUEST => Err(RequestError::BadRequest(String::new())),
29                reqwest::StatusCode::NOT_FOUND => Err(RequestError::NotFound),
30                _ => Err(RequestError::Unhandled),
31            },
32            Err(error) => {
33                if let Some(error_status) = error.status() {
34                    match error_status {
35                        reqwest::StatusCode::UNAUTHORIZED => {
36                            return Err(RequestError::Unauthorized);
37                        }
38                        reqwest::StatusCode::FORBIDDEN => {
39                            return Err(RequestError::Forbidden);
40                        }
41                        reqwest::StatusCode::NOT_FOUND => {
42                            return Err(RequestError::NotFound);
43                        }
44                        _ => return Err(RequestError::Unhandled),
45                    }
46                }
47
48                Err(RequestError::Unhandled)
49            }
50        }
51    }
52}