diff --git a/src/actix_web/inbox.rs b/src/actix_web/inbox.rs index 6dd9ef3..6f4fafc 100644 --- a/src/actix_web/inbox.rs +++ b/src/actix_web/inbox.rs @@ -10,16 +10,19 @@ 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, + hook: impl FnOnce( + &Activity, + &ActorT, + &Data, + ) -> Result<(), ::Error>, data: &Data, ) -> Result::Error> where @@ -29,7 +32,6 @@ where ::Error: From + From<::Error>, ::Error: From, Datatype: Clone, - Fut: Future::Error>>, { let digest_header = request .headers() @@ -44,7 +46,7 @@ where let uri = http_compat::uri(request.uri()); verify_signature(&headers, &method, &uri, actor.public_key_pem())?; - hook(&activity, &actor).await?; + hook(&activity, &actor, data)?; debug!("Receiving activity {}", activity.id().to_string()); activity.verify(data).await?;