Skip to main content

smbcloud_auth/
signup.rs

1use {
2    crate::client_credentials::{ClientCredentials, base_url_builder as tenant_base_url_builder},
3    reqwest::Client,
4    smbcloud_model::{
5        error_codes::ErrorResponse,
6        signup::{SignupEmailParams, SignupResult, SignupUserEmail},
7    },
8    smbcloud_network::{environment::Environment, network::request},
9    smbcloud_networking::{constants::PATH_USERS, smb_base_url_builder, smb_client::SmbClient},
10};
11
12pub async fn signup(
13    env: Environment,
14    client: (&SmbClient, &str),
15    email: String,
16    password: String,
17) -> Result<SignupResult, ErrorResponse> {
18    let params = SignupEmailParams {
19        user: SignupUserEmail { email, password },
20    };
21    let builder = Client::new()
22        .post(build_smb_signup_url(env, client))
23        .json(&params)
24        .header("User-agent", client.0.id());
25    request(builder).await
26}
27
28pub async fn signup_with_client(
29    env: Environment,
30    client: ClientCredentials<'_>,
31    email: String,
32    password: String,
33) -> Result<SignupResult, ErrorResponse> {
34    let params = SignupEmailParams {
35        user: SignupUserEmail { email, password },
36    };
37    let builder = Client::new()
38        .post(build_signup_url_with_client(env, client))
39        .json(&params)
40        .header("User-agent", client.app_id);
41    request(builder).await
42}
43
44fn build_smb_signup_url(env: Environment, client: (&SmbClient, &str)) -> String {
45    let mut url_builder = smb_base_url_builder(env, client);
46    url_builder.add_route(PATH_USERS);
47    url_builder.build()
48}
49
50fn build_signup_url_with_client(env: Environment, client: ClientCredentials<'_>) -> String {
51    let mut url_builder = tenant_base_url_builder(env, client);
52    url_builder.add_route("v1/client/users");
53    url_builder.build()
54}