@smbcloud / cli / commits / 440c21f

Project list

Seto Elkahfi committed Sep 10, 2023 at 22:28 UTC 440c21ffe179bfa256b0015621df2c2a30a49847
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 +}