3 files changed
+41
-33
smbpndk-cli/src/account/login/process.rs
+33
-24
@@ -12,7 +12,6 @@ use dialoguer::{theme::ColorfulTheme, Confirm, Input, Password, Select};
12
use log::debug;
13
use reqwest::{Client, StatusCode};
14
use serde::{Deserialize, Serialize};
15
-
15
use smbpndk_model::CommandResult;
16
use smbpndk_networking::smb_base_url_builder;
17
use smbpndk_utils::email_validation;
@@ -381,6 +380,39 @@ async fn input_reset_password_token() -> Result<CommandResult> {
380
}
381
}
382
383
+pub async fn process_logout() -> Result<CommandResult> {
384
+ let spinner = Spinner::new(
385
+ spinners::Spinners::SimpleDotsScrolling,
386
+ style("Logging you out...").green().bold().to_string(),
387
+ );
388
+ match home::home_dir() {
389
+ Some(path) => {
390
+ debug!("Home directory: {}.", path.to_str().unwrap());
391
+
392
+ // Check if token file exists
393
+ if !path.join(".smb/token").exists() {
394
+ return Ok(CommandResult {
395
+ spinner,
396
+ symbol: "✅".to_owned(),
397
+ msg: "You are not logged in.".to_owned(),
398
+ });
399
+ }
400
+
401
+ // Remove token file
402
+ fs::remove_file(path.join(".smb/token"))?;
403
+
404
+ Ok(CommandResult {
405
+ spinner,
406
+ symbol: "✅".to_owned(),
407
+ msg: "You are now logged out!".to_owned(),
408
+ })
409
+ }
410
+ None => Err(anyhow!("Failed to get home directory. Are you logged in?")),
411
+ }
412
+}
413
+
414
+// Private functions
415
+
416
fn build_smb_login_url() -> String {
417
let mut url_builder = smb_base_url_builder();
418
url_builder.add_route("v1/users/sign_in");
@@ -404,26 +436,3 @@ fn build_smb_reset_password_url() -> String {
436
url_builder.add_route("v1/users/password");
437
url_builder.build()
438
}
407
-
408
-pub async fn process_logout() -> Result<CommandResult> {
409
- let spinner = Spinner::new(
410
- spinners::Spinners::SimpleDotsScrolling,
411
- style("Logging you out...").green().bold().to_string(),
412
- );
413
- match home::home_dir() {
414
- Some(path) => {
415
- debug!("{}", path.to_str().unwrap());
416
- fs::remove_file([path.to_str().unwrap(), "/.smb/token"].join(""))?;
417
-
418
- Ok(CommandResult {
419
- spinner,
420
- symbol: "✅".to_owned(),
421
- msg: "You are logged out!".to_owned(),
422
- })
423
- }
424
- None => {
425
- let error = anyhow!("Failed to get home directory. Are you logged in?");
426
- Err(error)
427
- }
428
- }
429
-}
smbpndk-cli/src/project/mod.rs
+6
-7
@@ -110,12 +110,8 @@ pub async fn process_project(commands: Commands) -> Result<CommandResult> {
110
})
111
}
112
Err(e) => {
113
- println!("Error: {e:#?}");
114
- Ok(CommandResult {
115
- spinner,
116
- symbol: "😩".to_owned(),
117
- msg: "Failed to get project.".to_owned(),
118
- })
113
+ spinner.stop_and_persist("😩", "Failed.".to_string());
114
+ Err(anyhow!("{e}"))
115
}
116
}
117
}
@@ -149,7 +145,10 @@ pub async fn process_project(commands: Commands) -> Result<CommandResult> {
145
msg: "Project has been deleted.".to_string(),
146
})
147
}
152
- Err(e) => Err(anyhow!("{e}")),
148
+ Err(e) => {
149
+ spinner.stop_and_persist("😩", "Failed.".to_string());
150
+ Err(anyhow!("{e}"))
151
+ }
152
}
153
}
154
Commands::Use { id } => {
smbpndk-networking-project/src/lib.rs
+2
-2
@@ -49,7 +49,7 @@ pub async fn create_project(project: ProjectCreate) -> Result<Project> {
49
50
pub async fn get_project(id: String) -> Result<Project> {
51
// Get current token
52
- let token = get_token().await.unwrap();
52
+ let token = get_token().await?;
53
54
let response = Client::new()
55
.get(build_project_url_with_id(id))
@@ -69,7 +69,7 @@ pub async fn get_project(id: String) -> Result<Project> {
69
70
pub async fn delete_project(id: String) -> Result<()> {
71
// Get current token
72
- let token = get_token().await.unwrap();
72
+ let token = get_token().await?;
73
74
let response = Client::new()
75
.delete(build_project_url_with_id(id))