diff --git a/examples/federation/instance.rs b/examples/federation/instance.rs index 4943178..207ad4d 100644 --- a/examples/federation/instance.rs +++ b/examples/federation/instance.rs @@ -114,7 +114,7 @@ async fn http_post_user_inbox( ) -> Result { let data: InstanceHandle = data.into_inner().deref().clone(); let activity = serde_json::from_str(&payload)?; - receive_activity::, MyUser, InstanceHandle, Error>( + receive_activity::, MyUser, InstanceHandle>( request, activity, &data.clone().local_instance, diff --git a/src/core/inbox.rs b/src/core/inbox.rs index 1fe2c0f..39276b5 100644 --- a/src/core/inbox.rs +++ b/src/core/inbox.rs @@ -16,17 +16,19 @@ pub trait ActorPublicKey { } /// Receive an activity and perform some basic checks, including HTTP signature verification. -pub async fn receive_activity( +pub async fn receive_activity( request: HttpRequest, activity: Activity, local_instance: &LocalInstance, data: &Data, -) -> Result +) -> Result::Error> where - Activity: ActivityHandler + DeserializeOwned + Send + 'static, - Actor: ApubObject + ActorPublicKey + Send + 'static, + Activity: ActivityHandler + DeserializeOwned + Send + 'static, + Actor: ApubObject + ActorPublicKey + Send + 'static, for<'de2> ::ApubType: serde::Deserialize<'de2>, - E: From + From, + ::Error: + From + From + From<::Error>, + ::Error: From + From, { verify_domains_match(activity.id(), activity.actor())?; verify_url_valid(activity.id(), &local_instance.settings)?;