From 77fdaecf9d8f992ae67db82507937714eb050f12 Mon Sep 17 00:00:00 2001 From: Naian <126972030+nain-F49FF806@users.noreply.github.com> Date: Thu, 19 Oct 2023 12:24:54 +0200 Subject: [PATCH] refactor: move client features behind feature flags Signed-off-by: Naian <126972030+nain-F49FF806@users.noreply.github.com> --- agents/rust/mediator/Cargo.toml | 15 ++++++++--- agents/rust/mediator/src/aries_agent/me.rs | 13 --------- agents/rust/mediator/src/aries_agent/mod.rs | 2 +- agents/rust/mediator/src/bin/client-tui.rs | 24 +++++++---------- agents/rust/mediator/src/bin/client-web.rs | 27 ++++++++++--------- .../rust/mediator/src/http_routes/client.rs | 1 + agents/rust/mediator/src/http_routes/mod.rs | 3 ++- .../rust/mediator/src/utils/binary_utils.rs | 8 ++++++ agents/rust/mediator/src/utils/mod.rs | 2 +- 9 files changed, 49 insertions(+), 46 deletions(-) delete mode 100644 agents/rust/mediator/src/aries_agent/me.rs create mode 100644 agents/rust/mediator/src/utils/binary_utils.rs diff --git a/agents/rust/mediator/Cargo.toml b/agents/rust/mediator/Cargo.toml index 9402ebc8bd..e3a9879263 100644 --- a/agents/rust/mediator/Cargo.toml +++ b/agents/rust/mediator/Cargo.toml @@ -6,17 +6,24 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [features] -default = [] -client_tui=["cursive"] +default = ["client_http_api"] +client = [] +client_http_api = ["client"] +client_tui = ["client", "cursive"] + [dependencies] anyhow = "1.0.75" aries-vcx = { path = "../../../aries_vcx" } -aries_vcx_core = { path = "../../../aries_vcx_core", features = ["vdrtools_wallet"] } +aries_vcx_core = { path = "../../../aries_vcx_core", features = [ + "vdrtools_wallet", +] } async-trait = "0.1.73" axum = "0.6" axum-macros = "0.3.8" -cursive = { version = "0.20.0", features = ["crossterm-backend"], optional = true} +cursive = { version = "0.20.0", features = [ + "crossterm-backend", +], optional = true } diddoc_legacy = { path = "../../../diddoc_legacy" } dotenvy = "0.15" env_logger = "0.10.0" diff --git a/agents/rust/mediator/src/aries_agent/me.rs b/agents/rust/mediator/src/aries_agent/me.rs deleted file mode 100644 index ee9f4855c5..0000000000 --- a/agents/rust/mediator/src/aries_agent/me.rs +++ /dev/null @@ -1,13 +0,0 @@ -trait Foo {} -trait Faa {} - -struct Obar {} - -impl Foo for Obar {} -impl Faa for Obar {} - -fn trat() { - let a = Obar {}; - tak(a); -} -fn tak(name: &(dyn Foo + Faa)) {} diff --git a/agents/rust/mediator/src/aries_agent/mod.rs b/agents/rust/mediator/src/aries_agent/mod.rs index 160d7188b5..5400917036 100644 --- a/agents/rust/mediator/src/aries_agent/mod.rs +++ b/agents/rust/mediator/src/aries_agent/mod.rs @@ -30,7 +30,7 @@ use crate::utils::{prelude::*, structs::VeriKey}; pub mod transports; pub mod utils; -// #[cfg(test)] +#[cfg(any(test, feature = "client"))] pub mod client; #[derive(Clone)] diff --git a/agents/rust/mediator/src/bin/client-tui.rs b/agents/rust/mediator/src/bin/client-tui.rs index 248700a3fb..91cef72db7 100644 --- a/agents/rust/mediator/src/bin/client-tui.rs +++ b/agents/rust/mediator/src/bin/client-tui.rs @@ -1,28 +1,24 @@ -#[cfg(feature = "client_tui")] -use log::info; /// Aries Agent TUI -#[cfg(feature = "client_tui")] -use mediator::{aries_agent::AgentMaker, tui}; - #[cfg(feature = "client_tui")] #[tokio::main] async fn main() { - fn setup_logging() { - let env = env_logger::Env::default().default_filter_or("info"); - env_logger::init_from_env(env); - } + use mediator::{ + aries_agent::AgentMaker, + tui, + utils::binary_utils::{load_dot_env, setup_logging}, + }; - fn load_dot_env() { - let _ = dotenvy::dotenv(); - } - info!("TUI initializing!"); load_dot_env(); setup_logging(); + log::info!("TUI initializing!"); let agent = AgentMaker::new_demo_agent().await.unwrap(); tui::init_tui(agent).await; } #[cfg(not(feature = "client_tui"))] fn main() { - print!("This is a placeholder binary. Please enable \"client_tui\" feature to to build the functional client_tui binary.") + print!( + "This is a placeholder binary. Please enable \"client_tui\" feature to to build the \ + functional client_tui binary." + ) } diff --git a/agents/rust/mediator/src/bin/client-web.rs b/agents/rust/mediator/src/bin/client-web.rs index 1db6b9448f..9b1a868af4 100644 --- a/agents/rust/mediator/src/bin/client-web.rs +++ b/agents/rust/mediator/src/bin/client-web.rs @@ -1,14 +1,18 @@ /// Client-side focused api accessible Aries Agent -use log::info; -use mediator::{aries_agent::AgentMaker, http_routes::client::build_client_router}; - +#[cfg(feature = "client_http_api")] #[tokio::main] async fn main() { - info!("Putting up local web interface controlling client"); + use mediator::{ + aries_agent::AgentMaker, + http_routes::client::build_client_router, + utils::binary_utils::{load_dot_env, setup_logging}, + }; + load_dot_env(); setup_logging(); + log::info!("Putting up local web interface controlling client"); let endpoint_root = std::env::var("ENDPOINT_ROOT").unwrap_or("127.0.0.1:3003".into()); - info!("Client web endpoint root address {}", endpoint_root); + log::info!("Client web endpoint root address {}", endpoint_root); let agent = AgentMaker::new_demo_agent().await.unwrap(); let app_router = build_client_router(agent).await; axum::Server::bind( @@ -21,11 +25,10 @@ async fn main() { .unwrap(); } -fn setup_logging() { - let env = env_logger::Env::default().default_filter_or("info"); - env_logger::init_from_env(env); -} - -fn load_dot_env() { - let _ = dotenvy::dotenv(); +#[cfg(not(feature = "client_http_api"))] +fn main() { + print!( + "This is a placeholder binary. Please enable \"client_tui\" feature to to build the \ + functional client_tui binary." + ) } diff --git a/agents/rust/mediator/src/http_routes/client.rs b/agents/rust/mediator/src/http_routes/client.rs index 7cef53fa6f..37204aadb9 100644 --- a/agents/rust/mediator/src/http_routes/client.rs +++ b/agents/rust/mediator/src/http_routes/client.rs @@ -1,6 +1,7 @@ use std::collections::VecDeque; use aries_vcx_core::wallet::base_wallet::BaseWallet; +use axum::routing::post; use messages::msg_fields::protocols::out_of_band::invitation::Invitation as OOBInvitation; use serde_json::json; use xum_test_server::storage::MediatorPersistence; diff --git a/agents/rust/mediator/src/http_routes/mod.rs b/agents/rust/mediator/src/http_routes/mod.rs index 9024a4c861..4127d36d17 100644 --- a/agents/rust/mediator/src/http_routes/mod.rs +++ b/agents/rust/mediator/src/http_routes/mod.rs @@ -7,7 +7,7 @@ use axum::{ extract::State, http::header::{HeaderMap, ACCEPT}, response::{Html, IntoResponse, Response}, - routing::{get, post}, + routing::get, Json, Router, }; use log::info; @@ -25,6 +25,7 @@ use xum_test_server::{ use crate::{aries_agent::Agent, utils::string_from_std_error}; type ArcAgent = Arc>; +#[cfg(any(test, feature = "client_tui", feature = "client_http_api"))] pub mod client; #[derive(Debug, Serialize, Deserialize)] diff --git a/agents/rust/mediator/src/utils/binary_utils.rs b/agents/rust/mediator/src/utils/binary_utils.rs new file mode 100644 index 0000000000..751c5390cf --- /dev/null +++ b/agents/rust/mediator/src/utils/binary_utils.rs @@ -0,0 +1,8 @@ +pub fn setup_logging() { + let env = env_logger::Env::default().default_filter_or("info"); + env_logger::init_from_env(env); +} + +pub fn load_dot_env() { + let _ = dotenvy::dotenv(); +} diff --git a/agents/rust/mediator/src/utils/mod.rs b/agents/rust/mediator/src/utils/mod.rs index acb5ef0b0c..5efe89a809 100644 --- a/agents/rust/mediator/src/utils/mod.rs +++ b/agents/rust/mediator/src/utils/mod.rs @@ -1,8 +1,8 @@ pub use prelude::*; +pub mod binary_utils; pub mod prelude; pub mod structs; - ///// Utility function for mapping any error into a `500 Internal Server Error` ///// response. // fn internal_error(err: E) -> (axum::http::StatusCode, String)