relay filter/appview bootstrap
1mod channels;
2pub mod error;
3mod invites;
4mod lattices;
5mod memberships;
6mod shards;
7
8use std::sync::Arc;
9
10use axum::{
11 extract::Request,
12 routing::get,
13 Router,
14};
15
16use crate::AppState;
17use error::ApiError;
18
19pub fn router() -> Router<Arc<AppState>> {
20 Router::new()
21 .route(
22 "/xrpc/systems.gmstn.development.channel.listChannels",
23 get(channels::list_channels),
24 )
25 .route(
26 "/xrpc/systems.gmstn.development.channel.listInvites",
27 get(invites::list_invites),
28 )
29 .route(
30 "/xrpc/systems.gmstn.development.channel.listMemberships",
31 get(memberships::list_memberships),
32 )
33 .route(
34 "/xrpc/systems.gmstn.development.lattice.listLattices",
35 get(lattices::list_lattices),
36 )
37 .route(
38 "/xrpc/systems.gmstn.development.shard.listShards",
39 get(shards::list_shards),
40 )
41 .fallback(fallback_handler)
42}
43
44async fn fallback_handler(request: Request) -> ApiError {
45 let path = request.uri().path().to_string();
46 ApiError::MethodNotFound(path)
47}