10 files changed
+68
-36
Cargo.lock
+7
@@ -1161,7 +1161,14 @@ dependencies = [
1161
name = "smbpndk-utils"
1162
version = "0.1.0"
1163
dependencies = [
1164
+ "anyhow",
1165
+ "dirs",
1166
+ "home",
1167
+ "log",
1168
"regex",
1169
+ "serde",
1170
+ "serde_json",
1171
+ "smbpndk-model",
1172
]
1173
1174
[[package]]
Cargo.toml
+2
-2
@@ -1,9 +1,9 @@
1
[workspace]
2
members = [
3
+ "smbpndk-cli",
4
+ "smbpndk-model",
5
"smbpndk-networking",
6
"smbpndk-networking-auth-app",
7
"smbpndk-networking-project",
6
- "smbpndk-cli",
7
- "smbpndk-model",
8
"smbpndk-utils"
9
]
smbpndk-cli/Cargo.toml
+3
-3
@@ -24,16 +24,16 @@ dialoguer = "0.10.4"
24
dirs = "4.0.0"
25
dotenv = "0.15.0"
26
home = "0.5.4"
27
+log = "0.4.14"
28
open = "4.0.1"
29
regex = "1.3.1"
29
-log = "0.4.14"
30
reqwest = { version = "0.11", features = ["json"] }
31
serde = { version = "1", features = ["derive"] }
32
serde_json = "1.0.82"
33
+smbpndk-model = { path = "../smbpndk-model" }
34
+smbpndk-networking = { path = "../smbpndk-networking" }
35
smbpndk-networking-auth-app = { path = "../smbpndk-networking-auth-app" }
36
smbpndk-networking-project = { path = "../smbpndk-networking-project" }
35
-smbpndk-networking = { path = "../smbpndk-networking" }
36
-smbpndk-model = { path = "../smbpndk-model" }
37
smbpndk-utils = { path = "../smbpndk-utils" }
38
spinners = "4.1.0"
39
tokio = { version = "1.14.1", features = ["full"] }
smbpndk-model/Cargo.toml
+1
-2
@@ -2,9 +2,8 @@
2
name = "smbpndk-model"
3
version = "0.1.0"
4
edition = "2021"
5
-
5
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
6
7
[dependencies]
8
serde = { version = "1", features = ["derive"] }
10
-serde_json = "1.0.82"
\ No newline at end of file
9
+serde_json = "1.0.82"
smbpndk-networking-auth-app/Cargo.toml
+8
-9
@@ -2,19 +2,18 @@
2
name = "smbpndk-networking-auth-app"
3
version = "0.1.0"
4
edition = "2021"
5
-
5
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
6
7
[dependencies]
9
-reqwest = { version = "0.11", features = ["json"] }
10
-serde = { version = "1", features = ["derive"] }
11
-serde_json = "1.0.82"
12
-thiserror = "1.0.29"
8
+anyhow = "1.0.58"
9
async-trait = { version = "0.1.51", optional = true }
10
+dirs = "4.0.0"
11
+home = "0.5.4"
12
log = "0.4.14"
13
maybe-async = { version = "0.2", features = ["is_sync"] }
16
-home = "0.5.4"
17
-anyhow = "1.0.58"
18
-dirs = "4.0.0"
14
+reqwest = { version = "0.11", features = ["json"] }
15
+serde = { version = "1", features = ["derive"] }
16
+serde_json = "1.0.82"
17
+smbpndk-model = { path = "../smbpndk-model" }
18
smbpndk-networking = { path = "../smbpndk-networking" }
20
-smbpndk-model = { path = "../smbpndk-model" }
\ No newline at end of file
19
+thiserror = "1.0.29"
smbpndk-networking-project/Cargo.toml
+8
-9
@@ -2,19 +2,18 @@
2
name = "smbpndk-networking-project"
3
version = "0.1.0"
4
edition = "2021"
5
-
5
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
6
7
[dependencies]
9
-reqwest = { version = "0.11", features = ["json"] }
10
-serde = { version = "1", features = ["derive"] }
11
-serde_json = "1.0.82"
12
-thiserror = "1.0.29"
8
+anyhow = "1.0.58"
9
async-trait = { version = "0.1.51", optional = true }
10
+dirs = "4.0.0"
11
+home = "0.5.4"
12
log = "0.4.14"
13
maybe-async = { version = "0.2", features = ["is_sync"] }
16
-home = "0.5.4"
17
-anyhow = "1.0.58"
18
-dirs = "4.0.0"
14
+reqwest = { version = "0.11", features = ["json"] }
15
+serde = { version = "1", features = ["derive"] }
16
+serde_json = "1.0.82"
17
+smbpndk-model = { path = "../smbpndk-model" }
18
smbpndk-networking = { path = "../smbpndk-networking" }
20
-smbpndk-model = { path = "../smbpndk-model" }
\ No newline at end of file
19
+thiserror = "1.0.29"
smbpndk-networking-project/src/lib.rs
+1
-1
@@ -9,7 +9,7 @@ pub async fn get_all() -> Result<Vec<Project>> {
9
// Get current token
10
let token = get_token().await?;
11
12
- print!("{}", token);
12
+ debug!("Current token: {}", token);
13
14
let response = Client::new()
15
.get([BASE_URL, "v1/projects"].join(""))
smbpndk-networking/Cargo.toml
+7
-7
@@ -5,14 +5,14 @@ edition = "2021"
5
readme = "README.md"
6
7
[dependencies]
8
+anyhow = "1.0.58"
9
+async-trait = { version = "0.1.51", optional = true }
10
+dirs = "4.0.0"
11
+home = "0.5.4"
12
+log = "0.4.14"
13
+maybe-async = { version = "0.2", features = ["is_sync"] }
14
reqwest = { version = "0.11", features = ["json"] }
15
serde = { version = "1", features = ["derive"] }
16
serde_json = "1.0.82"
17
+smbpndk-model = { path = "../smbpndk-model" }
18
thiserror = "1.0.29"
12
-async-trait = { version = "0.1.51", optional = true }
13
-log = "0.4.14"
14
-maybe-async = { version = "0.2", features = ["is_sync"] }
15
-home = "0.5.4"
16
-anyhow = "1.0.58"
17
-dirs = "4.0.0"
18
-smbpndk-model = { path = "../smbpndk-model" }
\ No newline at end of file
smbpndk-utils/Cargo.toml
+8
-2
@@ -2,8 +2,14 @@
2
name = "smbpndk-utils"
3
version = "0.1.0"
4
edition = "2021"
5
-
5
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
6
7
[dependencies]
9
-regex = "1.3.1"
\ No newline at end of file
8
+anyhow = "1.0.58"
9
+dirs = "4.0.0"
10
+home = "0.5.4"
11
+log = "0.4.14"
12
+regex = "1.3.1"
13
+serde = { version = "1", features = ["derive"] }
14
+serde_json = "1.0.82"
15
+smbpndk-model = { path = "../smbpndk-model" }
smbpndk-utils/src/lib.rs
+23
-1
@@ -1,4 +1,9 @@
1
+use std::{fs::OpenOptions, io::Write};
2
+
3
+use anyhow::{anyhow, Result};
4
+use log::debug;
5
use regex::Regex;
6
+use smbpndk_model::Config;
7
8
pub fn email_validation(input: &str) -> Result<(), &'static str> {
9
let email_regex = Regex::new(
@@ -9,6 +14,23 @@ pub fn email_validation(input: &str) -> Result<(), &'static str> {
14
if email_regex.is_match(input) {
15
Ok(())
16
} else {
12
- Err("Username must be an email address")
17
+ Err("Username must be an email address.")
18
+ }
19
+}
20
+
21
+pub fn write_config(config: Config) -> Result<Config> {
22
+ match home::home_dir() {
23
+ Some(path) => {
24
+ debug!("{}", path.to_str().unwrap());
25
+ let mut file = OpenOptions::new()
26
+ .create(true)
27
+ .write(true)
28
+ .open([path.to_str().unwrap(), "/.smb/config.json"].join(""))?;
29
+ let json = serde_json::to_string(&config)?;
30
+ file.write_all(json.as_bytes())?;
31
+
32
+ Ok(config)
33
+ }
34
+ None => Err(anyhow!("Error getting config.")),
35
}
36
}