diff options
| author | gennyble <gen@nyble.dev> | 2026-09-26 01:48:05 -0500 |
|---|---|---|
| committer | gennyble <gen@nyble.dev> | 2026-09-26 01:48:05 -0500 |
| commit | 38cd35f4e2552b4baabbf6625627d56aa08ab8c1 (patch) | |
| tree | 8fc6378fcecd7299e5625219cad646714c6a57cf /splorm/src/handler | |
| parent | 6fb15557074e81042c2bde8cff73b1f3feb20c6c (diff) | |
/.me
Diffstat (limited to 'splorm/src/handler')
| -rw-r--r-- | splorm/src/handler/me.rs | 21 | ||||
| -rw-r--r-- | splorm/src/handler/mod.rs | 1 |
2 files changed, 22 insertions, 0 deletions
diff --git a/splorm/src/handler/me.rs b/splorm/src/handler/me.rs new file mode 100644 index 0000000..669e5f1 --- /dev/null +++ b/splorm/src/handler/me.rs @@ -0,0 +1,21 @@ +//! nested `/.me` +//! +//! Routes that return a 307 Temporary Redirect to information about me. These +//! routes use different schemes to open the email application or phone dailer etc. etc. + +use axum::{Extension, Router, body::Body, http::StatusCode, response::Response, routing::get}; + +use crate::{RuntimeError, config::Settings, state::SplormState}; + +/// Routes nested under /.me +pub fn routes() -> Router<SplormState> { + Router::new().route("/email", get(email)) +} + +async fn email(Extension(settings): Extension<Settings>) -> Result<Response, RuntimeError> { + Response::builder() + .status(StatusCode::TEMPORARY_REDIRECT) + .header("Location", format!("mailto:{}", settings.me_email())) + .body(Body::empty()) + .map_err(|_| RuntimeError::Unknown) +} diff --git a/splorm/src/handler/mod.rs b/splorm/src/handler/mod.rs index bac5c5c..5e57de6 100644 --- a/splorm/src/handler/mod.rs +++ b/splorm/src/handler/mod.rs @@ -23,6 +23,7 @@ use axum::{ use sessionhash::RequestContext; pub mod api; +pub mod me; pub mod quark; mod staticfile; mod templated; |
