use std::net::SocketAddr;
use url::Url;
#[derive(Debug, Clone)]
pub struct Config {
pub listen_addr: SocketAddr,
#[allow(unused)]
pub hostname: Url,
pub log_level: tracing::Level,
#[allow(unused)]
pub gateway_url: Option<String>,
}
impl Config {
pub fn new(listen_addr: SocketAddr, gateway_url: Option<String>) -> Self {
let hostname = Url::parse(&format!("http://localhost:{}", listen_addr.port())).unwrap();
tracing::info!(
"Creating HTTP server Config: listen_addr={}, gateway_url={:?}",
listen_addr,
gateway_url
);
Self {
listen_addr,
hostname,
log_level: tracing::Level::INFO,
gateway_url,
}
}
}
#[allow(dead_code)]
#[derive(Debug, thiserror::Error)]
pub enum ConfigError {
#[error("Invalid URL: {0}")]
Url(#[from] url::ParseError),
#[error("Invalid Socket Address: {0}")]
ListenAddr(#[from] std::net::AddrParseError),
}