updating to using actix for all things

This commit is contained in:
Chris Cochrun 2024-11-07 14:21:55 -06:00
parent 687f1ed565
commit 3e2353bc02
4 changed files with 240 additions and 74 deletions

View file

@ -1,6 +1,6 @@
mod api;
use actix_cors::Cors;
use actix_files::Files;
use actix_multipart::form::tempfile::TempFileConfig;
use actix_web::{middleware, App, HttpServer};
use api::camp_form::camp_form;
@ -10,58 +10,47 @@ use api::local_trip_form::local_form;
use api::mt_form::mt_form;
use api::parent_form::parent_form;
use api::teacher_form::teacher_form;
use log::LevelFilter;
use log4rs::append::console::ConsoleAppender;
use log4rs::append::file::FileAppender;
use log4rs::config::{Appender, Root};
use log4rs::encode::pattern::PatternEncoder;
use log4rs::Config;
use tracing::info;
use tracing::level_filters::LevelFilter;
use tracing_subscriber::{layer::SubscriberExt, EnvFilter, Layer};
#[actix_web::main]
async fn main() -> std::io::Result<()> {
// env_logger::init_from_env(env_logger::Env::new().default_filter_or("info"));
let stdout = ConsoleAppender::builder()
.encoder(Box::new(PatternEncoder::new(
"{d(%Y-%m-%d %H:%M:%S)} {h({l})} - {m}\n",
)))
.build();
let logfile = FileAppender::builder()
.encoder(Box::new(PatternEncoder::new(
"{d(%Y-%m-%d %H:%M:%S)} {h({l})} - {m}\n",
)))
.build("./tmp/api.log")?;
let timer =
tracing_subscriber::fmt::time::ChronoLocal::new("%Y-%m-%d_%I:%M:%S%.6f %P".to_owned());
let logfile = tracing_appender::rolling::daily("./tmp", "api.log");
let config = Config::builder()
.appender(Appender::builder().build("stdout", Box::new(stdout)))
.appender(Appender::builder().build("logfile", Box::new(logfile)))
.build(
Root::builder()
.appenders(vec!["logfile", "stdout"])
.build(LevelFilter::Info),
)
.unwrap();
let filter = EnvFilter::builder()
.with_default_directive(LevelFilter::WARN.into())
.parse_lossy("tfcapi=debug");
let logfile_layer = tracing_subscriber::fmt::layer()
.pretty()
.with_writer(logfile)
.with_line_number(true)
.with_level(true)
.with_target(true)
.with_timer(timer.clone());
let stdout_layer = tracing_subscriber::fmt::layer()
.pretty()
.with_line_number(true)
.with_target(true)
.with_timer(timer)
.with_filter(filter);
let filter = EnvFilter::builder()
.with_default_directive(LevelFilter::WARN.into())
.parse_lossy("tfcapi=debug");
tracing_subscriber::registry().with(logfile_layer.with_filter(filter).and_then(stdout_layer));
let _handle = log4rs::init_config(config).expect("error setting up logger");
log::info!("creating temporary upload directory");
info!("creating temporary upload directory");
std::fs::create_dir_all("./tmp")?;
log::info!("starting HTTP server at http://localhost:4242");
info!("starting HTTP server at http://localhost:4242");
HttpServer::new(|| {
// let cors = Cors::default()
// .send_wildcard()
// .allowed_origin("https://tfcconnection.org")
// .allowed_origin("http://localhost:1313")
// .allowed_origin("http://127.0.0.1:1313")
// .allow_any_origin()
// .allow_any_method()
// .allow_any_header()
// .max_age(3600);
App::new()
.wrap(middleware::Logger::default())
.app_data(TempFileConfig::default().directory("./tmp"))
.service(Files::new("/", "./public").show_files_listing())
.service(mt_form)
.service(health_form)
.service(parent_form)