use std::sync::Arc; use axum::routing::{delete, get, post, put}; use axum::Router; use crate::error::AppState; mod admin; mod auth; mod common; mod files; mod shares; mod spa; pub fn router(state: Arc) -> Router { Router::new() .route("/api/auth/login", post(auth::login)) .route("/api/auth/logout", post(auth::logout)) .route("/api/auth/me", get(auth::me)) .route("/api/auth/setup", post(auth::setup)) .route("/api/files/{root_id}", get(files::list_root)) .route("/api/files/{root_id}/{*path}", get(files::file_get)) .route("/api/files/{root_id}/{*path}", put(files::file_put)) .route("/api/files/{root_id}", post(files::dispatch_root)) .route("/api/files/{root_id}/{*path}", post(files::dispatch)) .route("/api/files/{root_id}/{*path}", delete(files::delete)) .route("/api/shares", get(shares::list)) .route("/api/shares", post(shares::create)) .route("/api/shares/{id}", delete(shares::delete)) .route("/api/share/{token}", get(shares::resolve)) .route("/api/admin/users", get(admin::list_users)) .route("/api/admin/users", post(admin::create_user)) .route("/api/admin/users/{id}", put(admin::update_user)) .route("/api/admin/users/{id}", delete(admin::delete_user)) .route("/api/admin/settings", get(admin::get_settings)) .route("/api/admin/settings", put(admin::update_settings)) .fallback(spa::fallback) .with_state(state) }