1 import * as kue from 'kue'
2 import { logger } from '../../../helpers/logger'
3 import { doRequest } from '../../../helpers/requests'
4 import { ACTIVITY_PUB } from '../../../initializers'
5 import { processActivities } from '../../activitypub/process'
6 import { ActivitypubHttpBroadcastPayload } from './activitypub-http-broadcast'
8 export type ActivitypubHttpFetcherPayload = {
12 async function processActivityPubHttpFetcher (job: kue.Job) {
13 logger.info('Processing ActivityPub fetcher in job %d.', job.id)
15 const payload = job.data as ActivitypubHttpBroadcastPayload
24 for (const uri of payload.uris) {
26 logger.info('Fetching ActivityPub data on %s.', uri)
28 const response = await doRequest(options)
29 const firstBody = response.body
31 if (firstBody.first && Array.isArray(firstBody.first.orderedItems)) {
32 const activities = firstBody.first.orderedItems
34 logger.info('Processing %i items ActivityPub fetcher for %s.', activities.length, options.uri)
36 await processActivities(activities)
39 let limit = ACTIVITY_PUB.FETCH_PAGE_LIMIT
41 let nextLink = firstBody.first.next
42 while (nextLink && i < limit) {
43 options.uri = nextLink
45 const { body } = await doRequest(options)
49 if (Array.isArray(body.orderedItems)) {
50 const activities = body.orderedItems
51 logger.info('Processing %i items ActivityPub fetcher for %s.', activities.length, options.uri)
53 await processActivities(activities)
59 // ---------------------------------------------------------------------------
62 processActivityPubHttpFetcher