8 files changed
+38
-23
Cargo.lock
+1
@@ -1327,6 +1327,7 @@ dependencies = [
1327
"serde_json",
1328
"smbpndk-model",
1329
"thiserror",
1330
+ "url-builder",
1331
]
1332
1333
[[package]]
smbpndk-cli/src/account/lib.rs
+2
-15
@@ -1,11 +1,12 @@
1
use anyhow::{anyhow, Result};
2
use console::style;
3
-use log::{debug, info};
3
+use log::debug;
4
use regex::Regex;
5
use reqwest::{Client, StatusCode};
6
use serde::{Deserialize, Serialize};
7
8
use serde_repr::Deserialize_repr;
9
+use smbpndk_networking::smb_base_url_builder;
10
use spinners::Spinner;
11
use std::{
12
env,
@@ -217,20 +218,6 @@ fn build_github_oauth_url() -> String {
218
url_builder.build()
219
}
220
220
-pub fn smb_base_url_builder() -> URLBuilder {
221
- let client_id = env::var("SMB_CLIENT_ID").expect("Please set SMB_CLIENT_ID");
222
- let client_secret = env::var("SMB_CLIENT_SECRET").expect("Please set SMB_CLIENT_SECRET");
223
- let api_host = env::var("SMB_API_HOST").expect("Please set SMB_API_HOST");
224
- let api_protocol = env::var("SMB_API_PROTOCOL").expect("Please set SMB_API_PROTOCOL");
225
- let mut url_builder = URLBuilder::new();
226
- url_builder
227
- .set_protocol(&api_protocol)
228
- .set_host(&api_host)
229
- .add_param("client_id", &client_id)
230
- .add_param("client_secret", &client_secret);
231
- url_builder
232
-}
233
-
221
fn github_base_url_builder() -> URLBuilder {
222
let client_id = env::var("GH_OAUTH_CLIENT_ID").expect("Please set GH_OAUTH_CLIENT_ID");
223
let redirect_host =
smbpndk-cli/src/account/login/process.rs
+3
-2
@@ -1,6 +1,6 @@
1
use crate::account::{
2
forgot::{Param, UserUpdatePassword},
3
- lib::{authorize_github, smb_base_url_builder, ErrorCode, GithubInfo, SmbAuthorization},
3
+ lib::{authorize_github, ErrorCode, GithubInfo, SmbAuthorization},
4
model::{Data, Status, User},
5
signup::{
6
do_signup, GithubEmail, Provider, SignupGithubParams, SignupMethod, SignupUserGithub,
@@ -12,8 +12,9 @@ use dialoguer::{theme::ColorfulTheme, Confirm, Input, Password, Select};
12
use log::debug;
13
use reqwest::{Client, Response, StatusCode};
14
use serde::{Deserialize, Serialize};
15
-use serde_json::json;
15
+
16
use smbpndk_model::CommandResult;
17
+use smbpndk_networking::smb_base_url_builder;
18
use smbpndk_utils::email_validation;
19
use spinners::Spinner;
20
use std::{
smbpndk-cli/src/account/signup/process.rs
+2
-1
@@ -1,6 +1,6 @@
1
use super::SignupMethod;
2
use crate::account::{
3
- lib::{authorize_github, smb_base_url_builder},
3
+ lib::authorize_github,
4
model::{Data, Status},
5
};
6
use anyhow::{anyhow, Result};
@@ -11,6 +11,7 @@ use reqwest::{Client, StatusCode};
11
use serde::{Deserialize, Serialize};
12
use smbpndk_model::CommandResult;
13
14
+use smbpndk_networking::smb_base_url_builder;
15
use smbpndk_utils::email_validation;
16
use spinners::Spinner;
17
use std::fmt::{Display, Formatter};
smbpndk-networking-project/README.md
new
+1
@@ -0,0 +1 @@
1
+# I don't know why this is exist
\ No newline at end of file
smbpndk-networking-project/src/lib.rs
+11
-5
@@ -3,7 +3,7 @@ use log::debug;
3
use reqwest::Client;
4
5
use smbpndk_model::{Project, ProjectCreate};
6
-use smbpndk_networking::{constants::BASE_URL, get_token};
6
+use smbpndk_networking::{get_token, smb_base_url_builder};
7
8
pub async fn get_all() -> Result<Vec<Project>> {
9
// Get current token
@@ -12,7 +12,7 @@ pub async fn get_all() -> Result<Vec<Project>> {
12
debug!("Current token: {}", token);
13
14
let response = Client::new()
15
- .get([BASE_URL, "v1/projects"].join(""))
15
+ .get(build_project_url())
16
.header("Authorization", token)
17
.header("User-agent", "smbpndk-cli")
18
.send()
@@ -32,7 +32,7 @@ pub async fn create_project(project: ProjectCreate) -> Result<Project> {
32
let token = get_token().await?;
33
34
let response = Client::new()
35
- .post([BASE_URL, "v1/projects"].join(""))
35
+ .post(build_project_url())
36
.json(&project)
37
.header("Authorization", token)
38
.send()
@@ -53,7 +53,7 @@ pub async fn get_project(id: String) -> Result<Project> {
53
let token = get_token().await.unwrap();
54
55
let response = Client::new()
56
- .get([BASE_URL, "v1/projects/", &id].join(""))
56
+ .get(build_project_url())
57
.header("Authorization", token)
58
.send()
59
.await?;
@@ -73,7 +73,7 @@ pub async fn delete_project(id: String) -> Result<()> {
73
let token = get_token().await.unwrap();
74
75
let response = Client::new()
76
- .delete([BASE_URL, "v1/projects/", &id].join(""))
76
+ .delete(build_project_url())
77
.header("Authorization", token)
78
.send()
79
.await?;
@@ -86,3 +86,9 @@ pub async fn delete_project(id: String) -> Result<()> {
86
_ => Err(anyhow!("Failed to delete a project.")),
87
}
88
}
89
+
90
+fn build_project_url() -> String {
91
+ let mut url_builder = smb_base_url_builder();
92
+ url_builder.add_route("v1/projects");
93
+ url_builder.build()
94
+}
\ No newline at end of file
smbpndk-networking/Cargo.toml
+1
@@ -23,3 +23,4 @@ serde = { version = "1", features = ["derive"] }
23
serde_json = "1.0.82"
24
smbpndk-model = { version = "0.3", path = "../smbpndk-model" }
25
thiserror = "1.0.29"
26
+url-builder = "0.1.1"
smbpndk-networking/src/lib.rs
+17
@@ -1,7 +1,10 @@
1
pub mod constants;
2
3
+use std::env;
4
+
5
use anyhow::{anyhow, Result};
6
use log::debug;
7
+use url_builder::URLBuilder;
8
9
pub async fn get_token() -> Result<String> {
10
if let Some(mut path) = dirs::home_dir() {
@@ -14,3 +17,17 @@ pub async fn get_token() -> Result<String> {
17
Err(anyhow!("Failed to get home directory."))
18
}
19
}
20
+
21
+pub fn smb_base_url_builder() -> URLBuilder {
22
+ let client_id = env::var("SMB_CLIENT_ID").expect("Please set SMB_CLIENT_ID");
23
+ let client_secret = env::var("SMB_CLIENT_SECRET").expect("Please set SMB_CLIENT_SECRET");
24
+ let api_host = env::var("SMB_API_HOST").expect("Please set SMB_API_HOST");
25
+ let api_protocol = env::var("SMB_API_PROTOCOL").expect("Please set SMB_API_PROTOCOL");
26
+ let mut url_builder = URLBuilder::new();
27
+ url_builder
28
+ .set_protocol(&api_protocol)
29
+ .set_host(&api_host)
30
+ .add_param("client_id", &client_id)
31
+ .add_param("client_secret", &client_secret);
32
+ url_builder
33
+}