tetratto/crates/app/src/routes/mod.rs
2025-07-07 14:45:30 -04:00

59 lines
1.9 KiB
Rust

pub mod api;
pub mod assets;
pub mod pages;
use crate::config::Config;
use axum::{
Router,
routing::{get, get_service},
};
pub fn routes(config: &Config) -> Router {
Router::new()
// assets
.route("/css/style.css", get(assets::style_css_request))
.route("/css/root.css", get(assets::root_css_request))
.route("/css/utility.css", get(assets::utility_css_request))
.route("/css/chats.css", get(assets::chats_css_request))
.route("/js/loader.js", get(assets::loader_js_request))
.route("/js/atto.js", get(assets::atto_js_request))
.route("/js/me.js", get(assets::me_js_request))
.route("/js/streams.js", get(assets::streams_js_request))
.route("/js/carp.js", get(assets::carp_js_request))
.route(
"/js/layout_editor.js",
get(assets::layout_editor_js_request),
)
.nest_service(
"/public",
get_service(tower_http::services::ServeDir::new(&config.dirs.assets)),
)
.nest_service(
"/icons",
get_service(tower_http::services::ServeDir::new(&config.dirs.icons)),
)
.nest_service(
"/reference",
get_service(tower_http::services::ServeDir::new(&config.dirs.rustdoc)),
)
.route("/public/favicon.svg", get(assets::favicon_request))
.route_service(
"/robots.txt",
tower_http::services::ServeFile::new(format!("{}/robots.txt", config.dirs.assets)),
)
// api
.nest("/api/v1", api::v1::routes())
// pages
.merge(pages::routes())
}
/// These routes are only used when you provide the `LITTLEWEB` environment variable.
///
/// These routes are NOT for editing. These routes are only for viewing littleweb sites.
pub fn lw_routes() -> Router {
Router::new()
// api
.nest("/api/v1", api::v1::lw_routes())
// pages
.merge(pages::lw_routes())
}