metasearch/src/web/mod.rs
2024-02-02 21:48:11 -06:00

63 lines
1.7 KiB
Rust

pub mod autocomplete;
pub mod opensearch;
pub mod search;
use std::net::SocketAddr;
use axum::{http::header, routing::get, Router};
pub const BIND_ADDRESS: &str = "0.0.0.0:28019";
pub async fn run() {
let app = Router::new()
.route(
"/",
get(|| async {
(
[(header::CONTENT_TYPE, "text/html; charset=utf-8")],
include_str!("assets/index.html"),
)
}),
)
.route(
"/style.css",
get(|| async {
(
[(header::CONTENT_TYPE, "text/css; charset=utf-8")],
include_str!("assets/style.css"),
)
}),
)
.route(
"/script.js",
get(|| async {
(
[(header::CONTENT_TYPE, "text/javascript; charset=utf-8")],
include_str!("assets/script.js"),
)
}),
)
.route(
"/robots.txt",
get(|| async {
(
[(header::CONTENT_TYPE, "text/plain; charset=utf-8")],
include_str!("assets/robots.txt"),
)
}),
)
.route("/opensearch.xml", get(opensearch::route))
.route("/search", get(search::route))
.route("/autocomplete", get(autocomplete::route));
println!("Listening on {BIND_ADDRESS}");
let listener = tokio::net::TcpListener::bind(BIND_ADDRESS).await.unwrap();
axum::serve(
listener,
app.into_make_service_with_connect_info::<SocketAddr>(),
)
.await
.unwrap();
}