From e2ea58d33a303a1c348ba75098f5e38091eb62ee Mon Sep 17 00:00:00 2001 From: silverpill Date: Wed, 12 Apr 2023 23:37:53 +0000 Subject: [PATCH] Make activity limit in outbox fetcher adjustable --- CHANGELOG.md | 1 + mitra-cli/src/cli.rs | 4 +++- src/activitypub/fetcher/fetchers.rs | 5 ++--- src/activitypub/fetcher/helpers.rs | 3 ++- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 81dd864..d608d2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Changed - Ignore errors when importing activities from outbox. +- Make activity limit in outbox fetcher adjustable. ## [1.21.0] - 2023-04-12 diff --git a/mitra-cli/src/cli.rs b/mitra-cli/src/cli.rs index 625ea71..332c3e4 100644 --- a/mitra-cli/src/cli.rs +++ b/mitra-cli/src/cli.rs @@ -227,6 +227,8 @@ impl RefetchActor { #[derive(Parser)] pub struct ReadOutbox { actor_id: String, + #[clap(long, default_value_t = 5)] + limit: usize, } impl ReadOutbox { @@ -235,7 +237,7 @@ impl ReadOutbox { config: &Config, db_client: &mut impl DatabaseClient, ) -> Result<(), Error> { - import_from_outbox(config, db_client, &self.actor_id).await?; + import_from_outbox(config, db_client, &self.actor_id, self.limit).await?; Ok(()) } } diff --git a/src/activitypub/fetcher/fetchers.rs b/src/activitypub/fetcher/fetchers.rs index 9da8afd..d4858a6 100644 --- a/src/activitypub/fetcher/fetchers.rs +++ b/src/activitypub/fetcher/fetchers.rs @@ -228,11 +228,10 @@ pub async fn fetch_object( Ok(object) } -const OUTBOX_PAGE_SIZE_LIMIT: usize = 5; - pub async fn fetch_outbox( instance: &Instance, outbox_url: &str, + limit: usize, ) -> Result, FetchError> { #[derive(Deserialize)] struct Collection { @@ -248,6 +247,6 @@ pub async fn fetch_outbox( let page_json = send_request(instance, &collection.first).await?; let page: CollectionPage = serde_json::from_str(&page_json)?; let activities = page.ordered_items.into_iter() - .take(OUTBOX_PAGE_SIZE_LIMIT).collect(); + .take(limit).collect(); Ok(activities) } diff --git a/src/activitypub/fetcher/helpers.rs b/src/activitypub/fetcher/helpers.rs index c600ce5..416bdf6 100644 --- a/src/activitypub/fetcher/helpers.rs +++ b/src/activitypub/fetcher/helpers.rs @@ -307,10 +307,11 @@ pub async fn import_from_outbox( config: &Config, db_client: &mut impl DatabaseClient, actor_id: &str, + limit: usize, ) -> Result<(), HandlerError> { let instance = config.instance(); let actor = fetch_actor(&instance, actor_id).await?; - let activities = fetch_outbox(&instance, &actor.outbox).await?; + let activities = fetch_outbox(&instance, &actor.outbox, limit).await?; log::info!("fetched {} activities", activities.len()); for activity in activities { let activity_actor = activity["actor"].as_str()