diff --git a/crates/bootstrap/src/main.rs b/crates/bootstrap/src/main.rs index c77acde..573a582 100644 --- a/crates/bootstrap/src/main.rs +++ b/crates/bootstrap/src/main.rs @@ -5,6 +5,14 @@ use std::net::SocketAddr; use std::sync::Arc; use tower_http::cors::{AllowOrigin, CorsLayer}; use tracing_subscriber::EnvFilter; +use activitypub_base::{ + actor_handler::actor_handler, + followers_handler::{followers_handler, following_handler}, + inbox::inbox_handler, + nodeinfo::{nodeinfo_handler, nodeinfo_well_known_handler}, + outbox::outbox_handler, + webfinger::webfinger_handler, +}; #[tokio::main] async fn main() { @@ -32,7 +40,19 @@ async fn main() { .allow_headers(tower_http::cors::Any) }; - let base = presentation::routes::router(&infra.fed_config) + let ap_router = axum::Router::new() + .route("/.well-known/webfinger", axum::routing::get(webfinger_handler)) + .route("/.well-known/nodeinfo", axum::routing::get(nodeinfo_well_known_handler)) + .route("/nodeinfo/2.0", axum::routing::get(nodeinfo_handler)) + .route("/users/{username}", axum::routing::get(actor_handler)) + .route("/users/{username}/inbox", axum::routing::post(inbox_handler)) + .route("/users/{username}/outbox", axum::routing::get(outbox_handler)) + .route("/users/{username}/followers", axum::routing::get(followers_handler)) + .route("/users/{username}/following", axum::routing::get(following_handler)) + .layer(infra.fed_config.middleware()); + + let base = presentation::routes::router() + .merge(ap_router) .with_state(infra.state) .layer(cors); diff --git a/crates/presentation/Cargo.toml b/crates/presentation/Cargo.toml index 0cb30a2..6626243 100644 --- a/crates/presentation/Cargo.toml +++ b/crates/presentation/Cargo.toml @@ -18,9 +18,7 @@ tracing = { workspace = true } async-trait = { workspace = true } sha2 = "0.10" hex = "0.4" -activitypub-base = { workspace = true } url = { workspace = true } -activitypub_federation = "0.7.0-beta.11" utoipa = { version = "5.5.0", features = ["axum_extras", "uuid", "chrono"] } utoipa-scalar = { version = "0.3.0", features = ["axum"], default-features = false } utoipa-swagger-ui = { version = "9.0.2", features = ["axum", "vendored"] } diff --git a/crates/presentation/src/routes.rs b/crates/presentation/src/routes.rs index 487e474..4702be2 100644 --- a/crates/presentation/src/routes.rs +++ b/crates/presentation/src/routes.rs @@ -1,20 +1,10 @@ use axum::{ - routing::{delete, get, patch, post, put}, + routing::{delete, get, post, put}, Router, }; -use activitypub_base::{ - actor_handler::actor_handler, - followers_handler::{followers_handler, following_handler}, - inbox::inbox_handler, - nodeinfo::{nodeinfo_handler, nodeinfo_well_known_handler}, - outbox::outbox_handler, - webfinger::webfinger_handler, - ApFederationConfig, -}; -use activitypub_federation::config::FederationMiddleware; use crate::{handlers::*, openapi, state::AppState}; -pub fn router(fed_config: &ApFederationConfig) -> Router { +pub fn router() -> Router { let api_routes = Router::new() // health .route("/health", get(health::health_handler)) @@ -74,20 +64,5 @@ pub fn router(fed_config: &ApFederationConfig) -> Router { ) .route("/api-keys/{id}", delete(api_keys::delete_api_key_handler)); - let ap_routes = Router::new() - .route("/.well-known/webfinger", get(webfinger_handler)) - .route("/.well-known/nodeinfo", get(nodeinfo_well_known_handler)) - .route("/nodeinfo/2.0", get(nodeinfo_handler)) - .route("/users/{username}", get(actor_handler)) - .route("/users/{username}/inbox", post(inbox_handler)) - .route("/users/{username}/outbox", get(outbox_handler)) - .route("/users/{username}/followers", get(followers_handler)) - .route("/users/{username}/following", get(following_handler)); - - let combined = Router::new() - .merge(api_routes) - .merge(ap_routes) - .layer(FederationMiddleware::new(fed_config.0.clone())); - - openapi::serve(combined) + openapi::serve(api_routes) }