//! Shared HTTP serving helpers.
use anyhow::Result;
use esp_idf_svc::http::server::EspHttpServer;
use esp_idf_svc::http::Method;
use esp_idf_svc::io::Write as _;
use crate::assets::Asset;
/// Register a static, pre-compressed asset at `uri`.
pub fn serve_asset(server: &mut EspHttpServer<'static>, uri: &str, asset: Asset) -> Result<()> {
server.fn_handler(uri, Method::Get, move |req| {
req.into_response(200, Some("OK"), asset.headers)?
.write_all(asset.bytes)?;
Ok::<(), anyhow::Error>(())
})?;
Ok(())
}
/// Register the shared style shell (CSS + fonts) that every page links.
pub fn serve_shell(server: &mut EspHttpServer<'static>) -> Result<()> {
for (uri, asset) in crate::assets::SHELL {
serve_asset(server, uri, *asset)?;
}
Ok(())
}
/// Register a `302` redirect from `uri` to `target`.
pub fn serve_redirect(
server: &mut EspHttpServer<'static>,
uri: &str,
target: &'static str,
) -> Result<()> {
server.fn_handler(uri, Method::Get, move |req| {
req.into_response(302, Some("Found"), &[("Location", target)])?;
Ok::<(), anyhow::Error>(())
})?;
Ok(())
}
neiam
/neiam-portal
public · Issues · Pulls · Labels · Forks · Compare · Actions success · Badges · Packages
⭐
Log in to mark this repository.
1.1 KiB · text
History
65cab78