ceres: a small planet in a giant solar system
33
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 35 lines 919 B view raw
1pub mod fallback; 2pub mod well_known; 3pub mod xrpc; 4 5use std::net::SocketAddr; 6 7use axum::{Router, routing::get}; 8use log::info; 9use tokio::net::TcpListener; 10use tokio_util::sync::CancellationToken; 11use tower_http::cors::CorsLayer; 12 13use crate::error::Result; 14use crate::state::AppState; 15 16pub async fn serve( 17 addr: SocketAddr, 18 state: AppState, 19 token: CancellationToken, 20) -> Result<()> { 21 let app: Router = Router::new() 22 .route("/.well-known/did.json", get(well_known::did_document)) 23 .merge(xrpc::app_bsky_actor::routes()) 24 .merge(xrpc::app_bsky_feed::routes()) 25 .fallback(fallback::log_request) 26 .layer(CorsLayer::permissive()) 27 .with_state(state); 28 29 let listener = TcpListener::bind(addr).await?; 30 info!("listening on http://{addr}"); 31 axum::serve(listener, app) 32 .with_graceful_shutdown(token.cancelled_owned()) 33 .await?; 34 Ok(()) 35}