16 files changed
+49
-72
crates/cli/src/account/lib.rs
+22
-20
@@ -1,25 +1,27 @@
1
-use crate::token::smb_token_file_path;
2
-use anyhow::{anyhow, Result};
3
-use console::style;
4
-use log::debug;
5
-use regex::Regex;
6
-use reqwest::{Client, Response, StatusCode};
7
-use smbcloud_model::account::SmbAuthorization;
8
-use smbcloud_network::environment::Environment;
9
-use smbcloud_networking::{
10
- constants::{
11
- GH_OAUTH_CLIENT_ID, GH_OAUTH_REDIRECT_HOST, GH_OAUTH_REDIRECT_PORT, PATH_AUTHORIZE,
1
+use {
2
+ crate::token::smb_token_file_path,
3
+ anyhow::{anyhow, Result},
4
+ console::style,
5
+ log::debug,
6
+ regex::Regex,
7
+ reqwest::{Client, Response, StatusCode},
8
+ smbcloud_model::account::SmbAuthorization,
9
+ smbcloud_network::environment::Environment,
10
+ smbcloud_networking::{
11
+ constants::{
12
+ GH_OAUTH_CLIENT_ID, GH_OAUTH_REDIRECT_HOST, GH_OAUTH_REDIRECT_PORT, PATH_AUTHORIZE,
13
+ },
14
+ smb_base_url_builder,
15
},
13
- smb_base_url_builder,
14
-};
15
-use spinners::Spinner;
16
-use std::{
17
- fs::{create_dir_all, OpenOptions},
18
- io::{BufRead, BufReader, Write},
19
- net::{TcpListener, TcpStream},
20
- sync::mpsc::{self, Receiver, Sender},
16
+ spinners::Spinner,
17
+ std::{
18
+ fs::{create_dir_all, OpenOptions},
19
+ io::{BufRead, BufReader, Write},
20
+ net::{TcpListener, TcpStream},
21
+ sync::mpsc::{self, Receiver, Sender},
22
+ },
23
+ url_builder::URLBuilder,
24
};
22
-use url_builder::URLBuilder;
25
26
pub async fn authorize_github(env: &Environment) -> Result<SmbAuthorization> {
27
// Spin up a simple localhost server to listen for the GitHub OAuth callback
crates/cli/src/account/logout/mod.rs
+1
-1
@@ -66,7 +66,7 @@ pub async fn process_logout(env: Environment) -> Result<CommandResult> {
66
}
67
68
async fn do_process_logout(env: Environment) -> Result<()> {
69
- let token = get_smb_token(env).await?;
69
+ let token = get_smb_token(env)?;
70
71
let response = Client::new()
72
.delete(build_smb_logout_url(env))
crates/cli/src/account/me/mod.rs
+1
-1
@@ -49,7 +49,7 @@ pub async fn process_me(env: Environment) -> Result<CommandResult> {
49
spinners::Spinners::SimpleDotsScrolling,
50
succeed_message("Loading"),
51
);
52
- let token = get_smb_token(env).await?;
52
+ let token = get_smb_token(env)?;
53
match me(env, &token).await {
54
Ok(user) => {
55
spinner.stop_and_persist(&succeed_symbol(), succeed_message("Loaded."));
crates/cli/src/deploy/process_deploy.rs
+1
-1
@@ -33,7 +33,7 @@ pub async fn process_deploy(env: Environment) -> Result<CommandResult> {
33
}
34
35
// Get current token
36
- let access_token = get_smb_token(env).await?;
36
+ let access_token = get_smb_token(env)?;
37
38
// Check config.
39
let config = check_config(env).await?;
crates/cli/src/deploy/setup_create_new_project.rs
+1
-1
@@ -73,7 +73,7 @@ pub(crate) async fn create_new_project(
73
}
74
};
75
76
- let access_token = match get_smb_token(env).await {
76
+ let access_token = match get_smb_token(env) {
77
Ok(token) => token,
78
Err(_) => {
79
return Err(ErrorResponse::Error {
crates/cli/src/deploy/setup_project.rs
+1
-1
@@ -39,7 +39,7 @@ pub(crate) async fn setup_project(env: Environment) -> Result<Config, ErrorRespo
39
});
40
}
41
42
- let access_token = match get_smb_token(env).await {
42
+ let access_token = match get_smb_token(env) {
43
Ok(token) => token,
44
Err(_) => {
45
return Err(ErrorResponse::Error {
crates/cli/src/project/crud_create.rs
+1
-1
@@ -53,7 +53,7 @@ pub async fn process_project_init(env: Environment) -> Result<CommandResult> {
53
style("Creating a project...").green().bold().to_string(),
54
);
55
56
- let access_token = get_smb_token(env).await?;
56
+ let access_token = get_smb_token(env)?;
57
match create_project(
58
env,
59
access_token,
crates/cli/src/project/crud_delete.rs
+1
-1
@@ -32,7 +32,7 @@ pub async fn process_project_delete(env: Environment, id: String) -> Result<Comm
32
msg: succeed_message("Cancelled."),
33
});
34
}
35
- let access_token = get_smb_token(env).await?;
35
+ let access_token = get_smb_token(env)?;
36
match delete_project(env, access_token, id).await {
37
Ok(_) => Ok(CommandResult {
38
spinner,
crates/cli/src/project/crud_read.rs
+3
-3
@@ -46,7 +46,7 @@ pub async fn process_project_list(env: Environment) -> Result<CommandResult> {
46
spinners::Spinners::SimpleDotsScrolling,
47
succeed_message("Loading"),
48
);
49
- let token = get_smb_token(env).await?;
49
+ let token = get_smb_token(env)?;
50
match get_projects(env, token).await {
51
Ok(projects) => {
52
spinner.stop_and_persist(&succeed_symbol(), succeed_message("Loaded."));
@@ -81,7 +81,7 @@ pub async fn process_project_show(env: Environment, id: String) -> Result<Comman
81
spinners::Spinners::SimpleDotsScrolling,
82
succeed_message("Loading"),
83
);
84
- let access_token = get_smb_token(env).await?;
84
+ let access_token = get_smb_token(env)?;
85
match get_project(env, access_token, id).await {
86
Ok(project) => {
87
spinner.stop_and_persist(&succeed_symbol(), succeed_message("Loaded."));
@@ -134,7 +134,7 @@ pub(crate) fn show_project_detail(project: &Project) {
134
}
135
136
pub(crate) async fn process_project_use(env: Environment, id: String) -> Result<CommandResult> {
137
- let access_token = get_smb_token(env).await?;
137
+ let access_token = get_smb_token(env)?;
138
let project = get_project(env, access_token, id).await?;
139
140
let config = Config {
crates/cli/src/project/crud_update.rs
+1
-1
@@ -22,7 +22,7 @@ pub async fn process_project_update_description(
22
let _ = process_login(env).await;
23
}
24
25
- let access_token = get_smb_token(env).await?;
25
+ let access_token = get_smb_token(env)?;
26
let project = get_project(env, access_token.clone(), project_id.clone()).await?;
27
28
if let Some(project_description) = project.description {
crates/cli/src/project/deployment.rs
+2
-2
@@ -20,7 +20,7 @@ pub(crate) async fn process_deployment(
20
// Load project id from .smb/config.toml
21
let config = check_config(env).await?;
22
23
- let access_token = get_smb_token(env).await?;
23
+ let access_token = get_smb_token(env)?;
24
25
check_project(env, &access_token, config.project.id).await?;
26
@@ -33,7 +33,7 @@ pub(crate) async fn process_deployment(
33
show_deployment_detail(&deployment);
34
} else {
35
// List all deployments for the project
36
- let access_token = get_smb_token(env).await?;
36
+ let access_token = get_smb_token(env)?;
37
let deployments = get_deployments(env, access_token, config.project.id).await?;
38
spinner.stop_and_persist(&succeed_symbol(), succeed_message("Load all deployments"));
39
show_project_deployments(&deployments);
crates/cli/src/token/is_logged_in.rs
new
+12
@@ -0,0 +1,12 @@
1
+pub async fn is_logged_in(env: Environment) -> bool {
2
+ // Check if token file exists
3
+ if !smb_token_file_path(env).is_some() {
4
+ return false;
5
+ }
6
+ // Check if token is valid
7
+ let access_token = get_smb_token(env)?;
8
+ match me(env, access_token).await {
9
+ Ok(_) => true,
10
+ Err(_) => false,
11
+ }
12
+}
crates/cli/src/token/mod.rs
+2
-13
@@ -6,9 +6,9 @@ use {
6
std::path::{Path, PathBuf},
7
};
8
9
-pub(crate) mod test_token_validity;
9
+//pub(crate) mod is_logged_in;
10
11
-pub async fn get_smb_token(env: Environment) -> Result<String> {
11
+pub fn get_smb_token(env: Environment) -> Result<String> {
12
if let Some(path) = smb_token_file_path(env) {
13
std::fs::read_to_string(path).map_err(|e| {
14
debug!("Error while reading token: {}", &e);
@@ -35,14 +35,3 @@ pub fn smb_token_file_path(env: Environment) -> Option<PathBuf> {
35
}
36
}
37
}
38
-
39
-pub fn remove_smb_token(env: Environment) -> Result<()> {
40
- if let Some(path) = smb_token_file_path(env) {
41
- std::fs::remove_file(path).map_err(|e| {
42
- debug!("Error while removing token: {}", &e);
43
- anyhow!("Error while removing token. Are you logged in?")
44
- })
45
- } else {
46
- Err(anyhow!("Failed to get home directory. Are you logged in?"))
47
- }
48
-}
crates/cli/src/token/test_token_validity.rs
deleted
-25
@@ -1,25 +0,0 @@
1
-use crate::token::{get_smb_token, smb_token_file_path};
2
-use anyhow::{anyhow, Result};
3
-use dialoguer::{theme::ColorfulTheme, Confirm};
4
-use reqwest::{Client, StatusCode};
5
-use smbcloud_network::environment::Environment;
6
-use smbcloud_networking::{constants::PATH_USERS_SIGN_OUT, smb_base_url_builder};
7
-use spinners::Spinner;
8
-use std::fs;
9
-
10
-async fn do_process_logout(env: Environment) -> Result<()> {
11
- let token = get_smb_token(env).await?;
12
-
13
- let response = Client::new()
14
- .delete(build_smb_logout_url(env))
15
- .header("Authorization", token)
16
- .header("Accept", "application/json")
17
- .header("Content-Type", "application/x-www-form-urlencoded")
18
- .send()
19
- .await?;
20
-
21
- match response.status() {
22
- StatusCode::OK => Ok(()),
23
- _ => Err(anyhow!("Failed to logout.")),
24
- }
25
-}
crates/smbcloud-networking/src/lib.rs
-1
@@ -1,5 +1,4 @@
1
pub mod constants;
2
-pub mod valid_token;
2
3
use {
4
constants::{SMB_CLIENT_ID, SMB_CLIENT_SECRET},