refactor(bootstrap): use ap_service.router() as single source of truth for AP routes
This commit is contained in:
@@ -261,7 +261,13 @@ impl ActivityPubService {
|
|||||||
Ok(serde_json::to_string(&WithContext::new_default(person))?)
|
Ok(serde_json::to_string(&WithContext::new_default(person))?)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn router(&self) -> Router {
|
/// Returns the ActivityPub router compatible with any outer state `S`.
|
||||||
|
/// Handlers only use `Data<FederationData>` injected by the middleware layer,
|
||||||
|
/// so the router is independent of the application state type.
|
||||||
|
pub fn router<S>(&self) -> Router<S>
|
||||||
|
where
|
||||||
|
S: Clone + Send + Sync + 'static,
|
||||||
|
{
|
||||||
Router::new()
|
Router::new()
|
||||||
.route("/.well-known/nodeinfo", get(nodeinfo_well_known_handler))
|
.route("/.well-known/nodeinfo", get(nodeinfo_well_known_handler))
|
||||||
.route("/nodeinfo/2.0", get(nodeinfo_handler))
|
.route("/nodeinfo/2.0", get(nodeinfo_handler))
|
||||||
|
|||||||
@@ -32,44 +32,8 @@ async fn main() {
|
|||||||
.allow_headers(tower_http::cors::Any)
|
.allow_headers(tower_http::cors::Any)
|
||||||
};
|
};
|
||||||
|
|
||||||
use activitypub_base::{
|
|
||||||
followers_handler::{followers_handler, following_handler},
|
|
||||||
inbox::inbox_handler,
|
|
||||||
nodeinfo::{nodeinfo_handler, nodeinfo_well_known_handler},
|
|
||||||
outbox::outbox_handler,
|
|
||||||
webfinger::webfinger_handler,
|
|
||||||
};
|
|
||||||
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("/inbox", axum::routing::post(inbox_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.ap_service.federation_config().middleware());
|
|
||||||
|
|
||||||
let base = presentation::routes::router()
|
let base = presentation::routes::router()
|
||||||
.merge(ap_router)
|
.merge(infra.ap_service.router::<presentation::state::AppState>())
|
||||||
.with_state(infra.state)
|
.with_state(infra.state)
|
||||||
.layer(cors);
|
.layer(cors);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user