use apimock_config::Config;
use apimock_server::{Server, ServerResult};
use tokio::sync::mpsc::Sender;
use crate::args::EnvArgs;
use crate::logger::init_logger;
pub struct App {
pub server: Server,
}
impl App {
pub async fn new(
env_args: &EnvArgs,
spawn_tx: Option<Sender<String>>,
includes_ansi_codes: bool,
) -> ServerResult<Self> {
let _ = init_logger(spawn_tx, includes_ansi_codes);
let mut config = Config::new(
env_args.config_file_path.as_ref(),
env_args.fallback_respond_dir_path.as_ref(),
)?;
if let Some(port) = env_args.port {
let mut listener = config.listener.unwrap_or_default();
listener.port = port;
config.listener = Some(listener);
}
let server = Server::new(config).await?;
Ok(Self { server })
}
}