1use cloakpipe_audit::AuditLogger;
4use cloakpipe_core::{config::CloakPipeConfig, detector::Detector, vault::Vault};
5use std::sync::Arc;
6use tokio::sync::Mutex;
7
8pub struct AppState {
10 pub config: CloakPipeConfig,
11 pub detector: Detector,
12 pub vault: Arc<Mutex<Vault>>,
13 pub audit: AuditLogger,
14 pub http_client: reqwest::Client,
15 pub api_key: String,
16}
17
18impl AppState {
19 pub fn new(
20 config: CloakPipeConfig,
21 detector: Detector,
22 vault: Vault,
23 audit: AuditLogger,
24 api_key: String,
25 ) -> Self {
26 let http_client = reqwest::Client::builder()
27 .timeout(std::time::Duration::from_secs(config.proxy.timeout_seconds))
28 .build()
29 .expect("Failed to build HTTP client");
30
31 Self {
32 config,
33 detector,
34 vault: Arc::new(Mutex::new(vault)),
35 audit,
36 http_client,
37 api_key,
38 }
39 }
40}