Refactor WASM account crate to use shared networking-account lib
Remove redundant dependencies and modules from smbcloud-networking-account-wasm. Delegate login and me functionality to smbcloud-networking-account. Add WASM binding for me endpoint. Move login logic and URL builder to shared crate.
Seto Elkahfi committed
Jul 26, 2025 at 20:41 UTC
50eef1e6af523f035edba6d08a7e6c7655871380
7 files changed
+41
-42
Cargo.lock
+1
-7
@@ -1970,14 +1970,8 @@ name = "smbcloud-networking-account-wasm"
1970
version = "0.1.0"
1971
dependencies = [
1972
"network",
1973
- "reqwest",
1974
- "serde",
1973
"serde-wasm-bindgen",
1976
- "serde_json",
1977
- "serde_repr",
1978
- "smbcloud-model",
1979
- "smbcloud-networking",
1980
- "thiserror 2.0.12",
1974
+ "smbcloud-networking-account",
1975
"wasm-bindgen",
1976
"wasm-bindgen-futures",
1977
]
crates/smbcloud-networking-account-wasm/Cargo.toml
+1
-7
@@ -8,13 +8,7 @@ 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"] }
11
+smbcloud-networking-account = { workspace = true }
12
wasm-bindgen = { workspace = true }
13
wasm-bindgen-futures = "0.4.50"
16
-serde = { workspace = true, features = ["derive"] }
17
-serde_json = { workspace = true }
18
-serde_repr = { workspace = true }
19
-thiserror = { workspace = true }
14
serde-wasm-bindgen = "=0.6.5"
crates/smbcloud-networking-account-wasm/src/lib.rs
+2
-2
@@ -1,2 +1,2 @@
1
-pub mod login;
2
-pub(crate) mod url_builder;
1
+mod login;
2
+mod me;
crates/smbcloud-networking-account-wasm/src/login.rs
+1
-18
@@ -1,31 +1,14 @@
1
-use crate::url_builder::build_smb_login_url;
1
use network::environment::Environment;
3
-use network::network::request;
4
-use reqwest::Client;
5
-use serde::Serialize;
6
-use smbcloud_model::login::LoginResult;
7
-use smbcloud_networking::constants::SMB_USER_AGENT;
2
use wasm_bindgen::JsValue;
3
use wasm_bindgen::prelude::wasm_bindgen;
4
11
-#[derive(Debug, Serialize)]
12
-pub struct LoginParams {
13
- pub username: String,
14
- pub password: String,
15
-}
16
-
5
#[wasm_bindgen]
6
pub async fn login(
7
env: Environment,
8
username: String,
9
password: String,
10
) -> Result<JsValue, JsValue> {
23
- let login_params = LoginParams { username, password };
24
- let builder = Client::new()
25
- .post(build_smb_login_url(env))
26
- .json(&login_params)
27
- .header("User-agent", SMB_USER_AGENT);
28
- match request::<LoginResult>(builder).await {
11
+ match smbcloud_networking_account::login::login(env, username, password).await {
12
Ok(response) => Ok(serde_wasm_bindgen::to_value(&response)?),
13
Err(error) => Err(serde_wasm_bindgen::to_value(&error)?),
14
}
crates/smbcloud-networking-account-wasm/src/me.rs
new
+11
@@ -0,0 +1,11 @@
1
+use network::environment::Environment;
2
+use wasm_bindgen::JsValue;
3
+use wasm_bindgen::prelude::wasm_bindgen;
4
+
5
+#[wasm_bindgen]
6
+pub async fn me(env: Environment, access_token: String) -> Result<JsValue, JsValue> {
7
+ match smbcloud_networking_account::me::me(env, &access_token).await {
8
+ Ok(response) => Ok(serde_wasm_bindgen::to_value(&response)?),
9
+ Err(error) => Err(serde_wasm_bindgen::to_value(&error)?),
10
+ }
11
+}
crates/smbcloud-networking-account-wasm/src/url_builder.rs
deleted
-8
@@ -1,8 +0,0 @@
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
-}
crates/smbcloud-networking-account/src/login.rs
+25
@@ -1 +1,26 @@
1
+use network::{environment::Environment, network::request};
2
+use reqwest::Client;
3
+use smbcloud_model::{error_codes::ErrorResponse, login::LoginArgs, login::LoginResult};
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
+}