5 files changed
+36
-1
Cargo.lock
+3
@@ -1947,6 +1947,9 @@ name = "smbcloud-networking-account"
1947
version = "0.1.0"
1948
dependencies = [
1949
"network",
1950
+ "reqwest",
1951
+ "smbcloud-model",
1952
+ "smbcloud-networking",
1953
]
1954
1955
[[package]]
crates/smbcloud-networking-account/Cargo.toml
+3
@@ -8,3 +8,6 @@ crate-type = ["cdylib", "rlib"]
8
9
[dependencies]
10
network = { workspace = true }
11
+smbcloud-networking = { workspace = true }
12
+smbcloud-model = { workspace = true }
13
+reqwest = { workspace = true, features = ["json"] }
crates/smbcloud-networking-account/src/lib.rs
+2
-1
@@ -1 +1,2 @@
1
-
1
+pub mod login;
2
+pub(crate) mod url_builder;
crates/smbcloud-networking-account/src/login.rs
new
+20
@@ -0,0 +1,20 @@
1
+use crate::url_builder::build_smb_login_url;
2
+use network::environment::Environment;
3
+use network::network::request;
4
+use reqwest::Client;
5
+use smbcloud_model::{
6
+ error_codes::ErrorResponse,
7
+ login::{LoginParams, LoginResult},
8
+};
9
+use smbcloud_networking::constants::SMB_USER_AGENT;
10
+
11
+pub async fn login(
12
+ env: Environment,
13
+ login_params: LoginParams,
14
+) -> Result<LoginResult, ErrorResponse> {
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
+}
crates/smbcloud-networking-account/src/url_builder.rs
new
+8
@@ -0,0 +1,8 @@
1
+use network::environment::Environment;
2
+use smbcloud_networking::{constants::PATH_USERS_SIGN_IN, smb_base_url_builder};
3
+
4
+pub(crate) fn build_smb_login_url(env: Environment) -> String {
5
+ let mut url_builder = smb_base_url_builder(env);
6
+ url_builder.add_route(PATH_USERS_SIGN_IN);
7
+ url_builder.build()
8
+}