diff --git a/Cargo.lock b/Cargo.lock
index e7c72eebc..71bd6c8f6 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -398,17 +398,6 @@ dependencies = [
"pin-project-lite",
]
-[[package]]
-name = "async-recursion"
-version = "1.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.39",
-]
-
[[package]]
name = "async-stream"
version = "0.3.5"
@@ -2874,6 +2863,7 @@ dependencies = [
"kitsune-jobs",
"kitsune-language",
"kitsune-mastodon",
+ "kitsune-messaging",
"kitsune-observability",
"kitsune-oidc",
"kitsune-search",
@@ -2920,7 +2910,6 @@ dependencies = [
name = "kitsune-activitypub"
version = "0.0.1-pre.4"
dependencies = [
- "async-recursion",
"async-trait",
"autometrics",
"base64-simd",
@@ -3085,7 +3074,6 @@ dependencies = [
"askama_axum",
"diesel",
"diesel-async",
- "iso8601-timestamp",
"kitsune-db",
"kitsune-url",
"lettre",
diff --git a/crates/kitsune-activitypub/Cargo.toml b/crates/kitsune-activitypub/Cargo.toml
index 0a7aa2246..ae4ae3f04 100644
--- a/crates/kitsune-activitypub/Cargo.toml
+++ b/crates/kitsune-activitypub/Cargo.toml
@@ -5,7 +5,6 @@ edition.workspace = true
version.workspace = true
[dependencies]
-async-recursion = "1.0.5"
async-trait = "0.1.74"
autometrics = { version = "0.6.0", default-features = false }
base64-simd = { version = "0.8.0", features = ["unstable"] }
diff --git a/crates/kitsune-activitypub/src/error.rs b/crates/kitsune-activitypub/src/error.rs
index b86d9ee8a..375b14049 100644
--- a/crates/kitsune-activitypub/src/error.rs
+++ b/crates/kitsune-activitypub/src/error.rs
@@ -30,6 +30,15 @@ pub enum Error {
#[error(transparent)]
FederationFilter(#[from] kitsune_federation_filter::error::Error),
+ #[error(transparent)]
+ FetchAccount(BoxError),
+
+ #[error(transparent)]
+ FetchEmoji(BoxError),
+
+ #[error(transparent)]
+ FetchPost(BoxError),
+
#[error(transparent)]
Http(#[from] http::Error),
diff --git a/crates/kitsune-activitypub/src/fetcher/mod.rs b/crates/kitsune-activitypub/src/fetcher/mod.rs
index 279b9ba55..548f709e6 100644
--- a/crates/kitsune-activitypub/src/fetcher/mod.rs
+++ b/crates/kitsune-activitypub/src/fetcher/mod.rs
@@ -6,7 +6,10 @@ use kitsune_cache::ArcCache;
use kitsune_core::{
consts::USER_AGENT,
error::BoxError,
- traits::{fetcher::AccountFetchOptions, Fetcher as FetcherTrait, Resolver},
+ traits::{
+ fetcher::{AccountFetchOptions, PostFetchOptions},
+ Fetcher as FetcherTrait, Resolver,
+ },
};
use kitsune_db::{
model::{account::Account, custom_emoji::CustomEmoji, post::Post},
@@ -130,7 +133,7 @@ impl FetcherTrait for Fetcher {
Ok(self.fetch_emoji(url).await?)
}
- async fn fetch_post(&self, url: &str) -> Result