diff --git a/Cargo.lock b/Cargo.lock index 3884a68..f56f00e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -192,6 +192,7 @@ name = "base" version = "0.1.0" dependencies = [ "chrono", + "log", "serde", "serde_json", ] @@ -893,6 +894,7 @@ name = "server" version = "0.1.0" dependencies = [ "axum", + "base", "env_logger", "log", "serde", diff --git a/crates/base/Cargo.toml b/crates/base/Cargo.toml index 9beaf96..db5d67c 100644 --- a/crates/base/Cargo.toml +++ b/crates/base/Cargo.toml @@ -10,3 +10,4 @@ workspace = true chrono = { version = "0.4.38", features = ["serde"] } serde = { version = "1.0.198", features = ["derive"] } serde_json = "1.0.116" +log = { workspace = true } diff --git a/crates/base/src/lib.rs b/crates/base/src/lib.rs index b46c094..73ee95f 100644 --- a/crates/base/src/lib.rs +++ b/crates/base/src/lib.rs @@ -1,7 +1,7 @@ #[cfg(test)] mod tests { use super::*; - + use log::*; #[test] fn print_serialized_test() { let temp_secret = TempSecret { @@ -36,6 +36,7 @@ pub fn create_mock_meta() -> SecretMeta { use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; +use serde_json::Value; use std::collections::HashMap; #[derive(Serialize, Deserialize, Debug)] @@ -84,3 +85,15 @@ pub fn serialize_metadata_json(secret: &SecretMeta) -> Result Result { serde_json::from_str(&raw) } + +pub fn body_to_json(body: String) -> Value{ + + match serde_json::from_str::(body.as_str()){ + Ok(val ) => { + return val}, + Err(e) => { + log::debug!("Faulty result from conversion: {:?}", e); + return Into::into("Error converting body") } + } + +} \ No newline at end of file diff --git a/crates/server/Cargo.toml b/crates/server/Cargo.toml index 2573a29..32a65cd 100644 --- a/crates/server/Cargo.toml +++ b/crates/server/Cargo.toml @@ -17,4 +17,5 @@ tower = { workspace = true, features = []} axum = { workspace = true } utoipa = { version = "4", features = ["axum_extras"] } serde = "1.0.197" -serde_json = "1.0.1" \ No newline at end of file +serde_json = "1.0.1" +base = { path = "../base" } \ No newline at end of file diff --git a/crates/server/src/main.rs b/crates/server/src/main.rs index f74ac38..598d9e8 100644 --- a/crates/server/src/main.rs +++ b/crates/server/src/main.rs @@ -1,8 +1,5 @@ use axum::{ - extract::Request, - http::StatusCode, - routing::{get,post, trace}, - Router, + extract::Request, http::StatusCode, routing::{get,post, trace}, Router }; use log::*; use std::{env, net::SocketAddr, str::FromStr}; @@ -13,13 +10,15 @@ mod identity; mod secrets; mod sys; use serde::Deserialize; -use serde_json; +use base::body_to_json; #[tokio::main] async fn main() { // To be configured via environment variables + env::set_var("RUST_LOG", "trace"); // Used to set level of logging -> choose from (highest to lowest): error, warn, info, debug, trace, off env_logger::init(); - + + // Listen on all IPv4 and IPv6 interfaces on port 8200 let listen_addr = env::var("LISTEN_ADDR").unwrap_or("[::]:8200".to_string()); // Do not change let listen_addr = SocketAddr::from_str(&listen_addr).expect("Failed to parse LISTEN_ADDR"); @@ -31,7 +30,7 @@ async fn main() { .nest("/v1/identity", identity::identity_router()) .nest("/v1/sys", sys::sys_router()) .nest("/v1", secrets::secrets_router()) // mountable secret backends - .route("/v1/kw_mount_path/data/foo", post(baz)) + .route("/v1/kv-v2/data/foo", post(baz)) .fallback(fallback_route_unknown); warn!("Listening on: {}", listen_addr.to_string()); @@ -49,7 +48,7 @@ struct CreateSecret { /// Routing handler for path "/v1/kw_mount_path/data/foo" /// expects payload as JSON, prints payload into struct async fn baz(body: String) -> String{ - let mut body_json = serde_json::from_str::(body.as_str()).unwrap(); + let mut body_json = body_to_json(body); let secret: CreateSecret = CreateSecret{password1: body_json["data"]["password1"].take().to_string(), password2: body_json["data"]["password2"].take().to_string()}; log::debug!("Pass1: {}, Pass2: {}", secret.password1, secret.password2); String::from("RoutingTest baz successful")