mod app_state; mod auth; mod handlers; mod s3_utils; mod thumbnail; use actix_web::{middleware::Logger, web, App, HttpServer}; use app_state::AppState; use handlers::{proxy_handler, upload_handler}; #[actix_web::main] async fn main() -> std::io::Result<()> { let app_state = AppState::new().await; let app_state_clone = app_state.clone(); tokio::spawn(async move { app_state_clone.update_filelist_from_aws().await; app_state_clone.refresh_file_list_periodically().await; }); HttpServer::new(move || { App::new() .app_data(web::Data::new(app_state.clone())) .wrap(Logger::default()) .route("/{path:.*}", web::get().to(proxy_handler)) .route("/", web::post().to(upload_handler)) }) .bind("127.0.0.1:8080")? .run() .await }