@smbcloud / cli / commits / e862481

pass around access_token

Seto Elkahfi committed May 31, 2025 at 18:41 UTC e8624817b5ff7bdcb98588cb0048da897b71473c
6 files changed +29 -29
crates/cli/src/deploy/setup.rs
+6
@@ -131,8 +131,14 @@ async fn create_new_project(env: Environment, path: &str) -> Result<Project, Con
131 }
132 };
133
134 + let access_token = match get_smb_token(env).await {
135 + Ok(token) => token,
136 + Err(_) => return Err(ConfigError::MissingToken),
137 + };
138 +
139 match create_project(
140 env,
141 + access_token,
142 ProjectCreate {
143 name,
144 repository,
crates/cli/src/project/crud_create.rs
+3 -1
@@ -7,7 +7,7 @@ use anyhow::{anyhow, Result};
7 use console::style;
8 use dialoguer::{theme::ColorfulTheme, Input};
9 use smbcloud_model::project::ProjectCreate;
10 -use smbcloud_networking::environment::Environment;
10 +use smbcloud_networking::{environment::Environment, get_smb_token};
11 use smbcloud_networking_project::create_project;
12 use spinners::Spinner;
13
@@ -51,8 +51,10 @@ pub async fn process_project_init(env: Environment) -> Result<CommandResult> {
51 style("Creating a project...").green().bold().to_string(),
52 );
53
54 + let access_token = get_smb_token(env).await?;
55 match create_project(
56 env,
57 + access_token,
58 ProjectCreate {
59 name: project_name.clone(),
60 repository,
crates/cli/src/project/crud_delete.rs
+3 -1
@@ -1,5 +1,7 @@
1 use crate::{
2 - account::lib::is_logged_in, cli::CommandResult, ui::{fail_message, fail_symbol, succeed_message, succeed_symbol}
2 + account::lib::is_logged_in,
3 + cli::CommandResult,
4 + ui::{fail_message, fail_symbol, succeed_message, succeed_symbol},
5 };
6 use anyhow::{anyhow, Result};
7 use dialoguer::{theme::ColorfulTheme, Input};
crates/smbcloud-model/src/error_codes.rs
+2 -2
@@ -1,7 +1,7 @@
1 use core::fmt;
2 -use std::fmt::{Display, Formatter};
2 use serde::{Deserialize, Serialize};
3 use serde_repr::{Deserialize_repr, Serialize_repr};
4 +use std::fmt::{Display, Formatter};
5 use strum_macros::EnumIter;
6 use thiserror::Error;
7
@@ -61,7 +61,7 @@ impl ErrorCode {
61 ErrorCode::ProjectNotFound => "Project not found.",
62 ErrorCode::ParseError => "Parse error.",
63 ErrorCode::NetworkError => "Network error.",
64 - ErrorCode::Unauthorized => "Unauthorized access."
64 + ErrorCode::Unauthorized => "Unauthorized access.",
65 }
66 }
67
crates/smbcloud-networking-project/src/crud_project_delete.rs
+1 -1
@@ -1,7 +1,7 @@
1 +use crate::build_project_url_with_id;
2 use reqwest::Client;
3 use smbcloud_model::error_codes::ErrorResponse;
4 use smbcloud_networking::{environment::Environment, network::request};
4 -use crate::build_project_url_with_id;
5
6 pub async fn delete_project(
7 env: Environment,
crates/smbcloud-networking-project/src/lib.rs
+14 -24
@@ -4,34 +4,24 @@ pub mod crud_project_deployment_read;
4 pub mod crud_project_deployment_update;
5 pub mod crud_project_read;
6
7 -use anyhow::{anyhow, Result};
7 +use anyhow::Result;
8 use reqwest::Client;
9 -use smbcloud_model::
10 - project::{Project, ProjectCreate}
11 -;
12 -use smbcloud_networking::{
13 - environment::Environment, get_smb_token, smb_base_url_builder,
9 +use smbcloud_model::{
10 + error_codes::ErrorResponse,
11 + project::{Project, ProjectCreate},
12 };
15 -
16 -pub async fn create_project(env: Environment, project: ProjectCreate) -> Result<Project> {
17 - // Get current token
18 - let token = get_smb_token(env).await?;
19 -
20 - let response = Client::new()
13 +use smbcloud_networking::{environment::Environment, network::request, smb_base_url_builder};
14 +
15 +pub async fn create_project(
16 + env: Environment,
17 + access_token: String,
18 + project: ProjectCreate,
19 +) -> Result<Project, ErrorResponse> {
20 + let builder = Client::new()
21 .post(build_project_url(env))
22 .json(&project)
23 - .header("Authorization", token)
24 - .send()
25 - .await?;
26 -
27 - match response.status() {
28 - reqwest::StatusCode::CREATED => {
29 - let project: Project = response.json().await?;
30 - // println!("Project created: {project:#?}");
31 - Ok(project)
32 - }
33 - _ => Err(anyhow!("Failed to create a project.")),
34 - }
23 + .header("Authorization", access_token);
24 + request(builder).await
25 }
26
27 // Private functions