pub mod auth;
pub mod dashboard;
pub mod error;
pub mod federation_routes;
#[cfg(feature = "graphql")]
pub mod graphql;
pub mod openapi;
pub mod routes;
pub mod server;
use serde::{Deserialize, Serialize};
use zeroize::Zeroize;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct ApiConfig {
pub host: String,
pub port: u16,
pub jwt_secret: String,
pub token_expiry_secs: u64,
pub cors_permissive: bool,
pub max_body_size: usize,
pub enable_dashboard: bool,
#[serde(default)]
pub revocation_store: Option<std::path::PathBuf>,
}
impl Default for ApiConfig {
fn default() -> Self {
Self {
host: "127.0.0.1".into(),
port: 8080,
jwt_secret: String::new(), token_expiry_secs: 3600,
cors_permissive: false,
max_body_size: 512 * 1024 * 1024,
enable_dashboard: true,
revocation_store: None,
}
}
}
impl Drop for ApiConfig {
fn drop(&mut self) {
self.jwt_secret.zeroize();
}
}