@smbcloud / cli / commits / 50eef1e

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 +}