pub mod api; pub mod state; pub mod auth; pub mod repo; pub mod storage; use axum::{ routing::{get, post, any}, Router, }; use state::AppState; pub fn app(state: AppState) -> Router { Router::new() .route("/health", get(api::server::health)) .route("/xrpc/com.atproto.server.describeServer", get(api::server::describe_server)) .route("/xrpc/com.atproto.server.createAccount", post(api::identity::create_account)) .route("/xrpc/com.atproto.server.createSession", post(api::server::create_session)) .route("/xrpc/com.atproto.server.getSession", get(api::server::get_session)) .route("/xrpc/com.atproto.server.deleteSession", post(api::server::delete_session)) .route("/xrpc/com.atproto.server.refreshSession", post(api::server::refresh_session)) .route("/xrpc/com.atproto.repo.createRecord", post(api::repo::create_record)) .route("/xrpc/com.atproto.repo.putRecord", post(api::repo::put_record)) .route("/xrpc/com.atproto.repo.getRecord", get(api::repo::get_record)) .route("/xrpc/com.atproto.repo.deleteRecord", post(api::repo::delete_record)) .route("/xrpc/com.atproto.repo.listRecords", get(api::repo::list_records)) .route("/xrpc/com.atproto.repo.describeRepo", get(api::repo::describe_repo)) .route("/xrpc/com.atproto.repo.uploadBlob", post(api::repo::upload_blob)) .route("/.well-known/did.json", get(api::identity::well_known_did)) .route("/u/{handle}/did.json", get(api::identity::user_did_doc)) .route("/xrpc/{*method}", any(api::proxy::proxy_handler)) .with_state(state) }