From 9f56f5390c1eae41a4dface393fff6b63fa72708 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Mon, 16 Jun 2025 14:46:03 +0200 Subject: [PATCH] Add hook for incoming activities --- src/actix_web/inbox.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/actix_web/inbox.rs b/src/actix_web/inbox.rs index 0912e72..6dd9ef3 100644 --- a/src/actix_web/inbox.rs +++ b/src/actix_web/inbox.rs @@ -10,14 +10,16 @@ use crate::{ }; use actix_web::{web::Bytes, HttpRequest, HttpResponse}; use serde::de::DeserializeOwned; +use std::future::Future; use tracing::debug; /// Handles incoming activities, verifying HTTP signatures and other checks /// /// After successful validation, activities are passed to respective [trait@ActivityHandler]. -pub async fn receive_activity( +pub async fn receive_activity( request: HttpRequest, body: Bytes, + hook: impl FnOnce(&Activity, &ActorT) -> Fut, data: &Data, ) -> Result::Error> where @@ -27,6 +29,7 @@ where ::Error: From + From<::Error>, ::Error: From, Datatype: Clone, + Fut: Future::Error>>, { let digest_header = request .headers() @@ -41,6 +44,8 @@ where let uri = http_compat::uri(request.uri()); verify_signature(&headers, &method, &uri, actor.public_key_pem())?; + hook(&activity, &actor).await?; + debug!("Receiving activity {}", activity.id().to_string()); activity.verify(data).await?; activity.receive(data).await?;