use console::style;
use serde::{Deserialize, Serialize};
use sword_core::{Config, ConfigItem, ConfigRegistrar, State, inventory_submit};
use sword_layers::DisplayConfig;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct HttpRuntimeConfig {
pub host: String,
pub port: u16,
#[serde(rename = "http-router-prefix")]
pub http_router_prefix: Option<String>,
}
impl DisplayConfig for HttpRuntimeConfig {
fn display(&self) {
println!();
println!("{}", style("HTTP Server Configuration:").bold());
println!(" ↳ Host: {}", self.host);
println!(" ↳ Port: {}", self.port);
if let Some(prefix) = &self.http_router_prefix {
println!(" ↳ Http Router Prefix: {prefix}");
}
}
}
impl ConfigItem for HttpRuntimeConfig {
fn toml_key() -> &'static str {
"http"
}
fn register(state: &State, config: &Config) {
state.insert(config.get_or_default::<Self>());
}
}
inventory_submit! {[
ConfigRegistrar::new(|state, config| {
HttpRuntimeConfig::register(state, config)
})
]}
impl Default for HttpRuntimeConfig {
fn default() -> Self {
Self {
host: "0.0.0.0".to_string(),
port: 8000,
http_router_prefix: None,
}
}
}