1 use reqwest::Client;
2 use smbcloud_model::{error_codes::ErrorResponse, login::LoginArgs, login::LoginResult};
3 use smbcloud_network::{environment::Environment, network::request};
4 use smbcloud_networking::{
5 constants::{PATH_USERS_SIGN_IN, SMB_USER_AGENT},
6 smb_base_url_builder,
7 };
8
9 pub async fn login(
10 env: Environment,
11 username: String,
12 password: String,
13 ) -> Result<LoginResult, ErrorResponse> {
14 let login_params = LoginArgs { username, password };
15 let builder = Client::new()
16 .post(build_smb_login_url(env))
17 .json(&login_params)
18 .header("User-agent", SMB_USER_AGENT);
19 request(builder).await
20 }
21
22 pub(crate) fn build_smb_login_url(env: Environment) -> String {
23 let mut url_builder = smb_base_url_builder(env);
24 url_builder.add_route(PATH_USERS_SIGN_IN);
25 url_builder.build()
26 }