Skip to main content

max / makenotwork

898 B · 26 lines History Blame Raw
1 //! Embeddable widget routes; public, no auth, iframe-friendly.
2 //!
3 //! All routes under `/embed/` serve self-contained HTML pages designed to be
4 //! loaded inside iframes on external sites. They cache for 5 minutes; framing
5 //! and CSP are owned by the global `security_headers_middleware`, not by
6 //! anything under this module.
7
8 mod item;
9 mod project;
10 mod user;
11
12 use crate::AppState;
13 use axum::{Router, routing::get};
14
15 pub fn embed_routes() -> Router<AppState> {
16 Router::new()
17 // Item embeds
18 .route("/embed/i/{item_id}/button", get(item::item_button))
19 .route("/embed/i/{item_id}/card", get(item::item_card))
20 .route("/embed/i/{item_id}/player", get(item::item_player))
21 // Project embeds
22 .route("/embed/p/{project_slug}/card", get(project::project_card))
23 // User embeds
24 .route("/embed/u/{username}/tip", get(user::tip_button))
25 }
26