Skip to main content

max / makenotwork

821 B · 25 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 set permissive frame headers
5 //! and cache for 5 minutes.
6
7 mod item;
8 mod project;
9 mod user;
10
11 use axum::{routing::get, Router};
12 use crate::AppState;
13
14 pub fn embed_routes() -> Router<AppState> {
15 Router::new()
16 // Item embeds
17 .route("/embed/i/{item_id}/button", get(item::item_button))
18 .route("/embed/i/{item_id}/card", get(item::item_card))
19 .route("/embed/i/{item_id}/player", get(item::item_player))
20 // Project embeds
21 .route("/embed/p/{project_slug}/card", get(project::project_card))
22 // User embeds
23 .route("/embed/u/{username}/tip", get(user::tip_button))
24 }
25