1 use crate::client_credentials::{ClientCredentials, base_url_builder as tenant_base_url_builder};
2 use reqwest::Client;
3 use smbcloud_model::account::User;
4 use smbcloud_model::error_codes::ErrorResponse;
5 use smbcloud_network::{environment::Environment, network::request};
6 use smbcloud_networking::{constants::PATH_USERS_ME, smb_base_url_builder, smb_client::SmbClient};
7
8 pub async fn me(
9 env: Environment,
10 client: (&SmbClient, &str),
11 access_token: &str,
12 ) -> Result<User, ErrorResponse> {
13 let builder = Client::new()
14 .get(build_smb_info_url(env, client))
15 .header("Authorization", access_token)
16 .header("Accept", "application/json")
17 .header("Content-Type", "application/x-www-form-urlencoded");
18 request(builder).await
19 }
20
21 pub async fn me_with_client(
22 env: Environment,
23 client: ClientCredentials<'_>,
24 access_token: &str,
25 ) -> Result<User, ErrorResponse> {
26 let builder = Client::new()
27 .get(build_info_url_with_client(env, client))
28 .header("Authorization", access_token)
29 .header("Accept", "application/json")
30 .header("Content-Type", "application/x-www-form-urlencoded");
31 request(builder).await
32 }
33
34 fn build_smb_info_url(env: Environment, client: (&SmbClient, &str)) -> String {
35 let mut url_builder = smb_base_url_builder(env, client);
36 url_builder.add_route(PATH_USERS_ME);
37 url_builder.build()
38 }
39
40 fn build_info_url_with_client(env: Environment, client: ClientCredentials<'_>) -> String {
41 let mut url_builder = tenant_base_url_builder(env, client);
42 url_builder.add_route("v1/client/me");
43 url_builder.build()
44 }