fix(arch): move AP router assembly to bootstrap — presentation no longer depends on activitypub-base
This commit is contained in:
@@ -5,6 +5,14 @@ use std::net::SocketAddr;
|
|||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use tower_http::cors::{AllowOrigin, CorsLayer};
|
use tower_http::cors::{AllowOrigin, CorsLayer};
|
||||||
use tracing_subscriber::EnvFilter;
|
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]
|
#[tokio::main]
|
||||||
async fn main() {
|
async fn main() {
|
||||||
@@ -32,7 +40,19 @@ async fn main() {
|
|||||||
.allow_headers(tower_http::cors::Any)
|
.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)
|
.with_state(infra.state)
|
||||||
.layer(cors);
|
.layer(cors);
|
||||||
|
|
||||||
|
|||||||
@@ -18,9 +18,7 @@ tracing = { workspace = true }
|
|||||||
async-trait = { workspace = true }
|
async-trait = { workspace = true }
|
||||||
sha2 = "0.10"
|
sha2 = "0.10"
|
||||||
hex = "0.4"
|
hex = "0.4"
|
||||||
activitypub-base = { workspace = true }
|
|
||||||
url = { workspace = true }
|
url = { workspace = true }
|
||||||
activitypub_federation = "0.7.0-beta.11"
|
|
||||||
utoipa = { version = "5.5.0", features = ["axum_extras", "uuid", "chrono"] }
|
utoipa = { version = "5.5.0", features = ["axum_extras", "uuid", "chrono"] }
|
||||||
utoipa-scalar = { version = "0.3.0", features = ["axum"], default-features = false }
|
utoipa-scalar = { version = "0.3.0", features = ["axum"], default-features = false }
|
||||||
utoipa-swagger-ui = { version = "9.0.2", features = ["axum", "vendored"] }
|
utoipa-swagger-ui = { version = "9.0.2", features = ["axum", "vendored"] }
|
||||||
|
|||||||
@@ -1,20 +1,10 @@
|
|||||||
use axum::{
|
use axum::{
|
||||||
routing::{delete, get, patch, post, put},
|
routing::{delete, get, post, put},
|
||||||
Router,
|
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};
|
use crate::{handlers::*, openapi, state::AppState};
|
||||||
|
|
||||||
pub fn router(fed_config: &ApFederationConfig) -> Router<AppState> {
|
pub fn router() -> Router<AppState> {
|
||||||
let api_routes = Router::new()
|
let api_routes = Router::new()
|
||||||
// health
|
// health
|
||||||
.route("/health", get(health::health_handler))
|
.route("/health", get(health::health_handler))
|
||||||
@@ -74,20 +64,5 @@ pub fn router(fed_config: &ApFederationConfig) -> Router<AppState> {
|
|||||||
)
|
)
|
||||||
.route("/api-keys/{id}", delete(api_keys::delete_api_key_handler));
|
.route("/api-keys/{id}", delete(api_keys::delete_api_key_handler));
|
||||||
|
|
||||||
let ap_routes = Router::new()
|
openapi::serve(api_routes)
|
||||||
.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)
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user