Make activity limit in outbox fetcher adjustable
This commit is contained in:
parent
a3f44cf678
commit
e2ea58d33a
4 changed files with 8 additions and 5 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -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(())
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<Vec<JsonValue>, 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)
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in a new issue