52 lines
1.3 KiB
Rust
52 lines
1.3 KiB
Rust
|
#[macro_use]
|
||
|
extern crate rocket;
|
||
|
|
||
|
use known_software::KnownInstanceSoftware;
|
||
|
use rocket::{
|
||
|
fs::{FileServer, NamedFile},
|
||
|
http::ContentType,
|
||
|
};
|
||
|
use std::path::PathBuf;
|
||
|
|
||
|
mod known_software;
|
||
|
|
||
|
#[get("/known-software.json")]
|
||
|
async fn known_software_json() -> Option<NamedFile> {
|
||
|
NamedFile::open("known-software.json").await.ok()
|
||
|
}
|
||
|
|
||
|
#[get("/<instance>/<route..>", rank = 1)]
|
||
|
async fn route_for_known_instance_software(
|
||
|
instance: KnownInstanceSoftware<'_>,
|
||
|
route: PathBuf,
|
||
|
) -> Option<NamedFile> {
|
||
|
NamedFile::open("static/crossroad.html").await.ok()
|
||
|
}
|
||
|
|
||
|
#[get("/<instance>/<route..>", rank = 2)]
|
||
|
fn route_for_unknown_instance_software(instance: &str, route: PathBuf) -> (ContentType, String) {
|
||
|
(
|
||
|
ContentType::HTML,
|
||
|
format!(
|
||
|
"Hello from <code>{}</code>! The software <code>{}</code> is unknown.",
|
||
|
route.display(),
|
||
|
instance
|
||
|
),
|
||
|
)
|
||
|
}
|
||
|
|
||
|
#[launch]
|
||
|
fn rocket() -> _ {
|
||
|
rocket::build()
|
||
|
.mount("/static", FileServer::from("static").rank(0))
|
||
|
.mount("/api", routes![])
|
||
|
.mount(
|
||
|
"/",
|
||
|
routes![
|
||
|
known_software_json,
|
||
|
route_for_known_instance_software,
|
||
|
route_for_unknown_instance_software
|
||
|
],
|
||
|
)
|
||
|
}
|