Migrate to bull
[oweals/peertube.git] / server / lib / job-queue / handlers / activitypub-http-fetcher.ts
1 import * as Bull from 'bull'
2 import { logger } from '../../../helpers/logger'
3 import { processActivities } from '../../activitypub/process'
4 import { ActivitypubHttpBroadcastPayload } from './activitypub-http-broadcast'
5 import { crawlCollectionPage } from '../../activitypub/crawl'
6 import { Activity } from '../../../../shared/models/activitypub'
7
8 export type ActivitypubHttpFetcherPayload = {
9   uris: string[]
10 }
11
12 async function processActivityPubHttpFetcher (job: Bull.Job) {
13   logger.info('Processing ActivityPub fetcher in job %d.', job.id)
14
15   const payload = job.data as ActivitypubHttpBroadcastPayload
16
17   for (const uri of payload.uris) {
18     await crawlCollectionPage<Activity>(uri, (items) => processActivities(items))
19   }
20 }
21
22 // ---------------------------------------------------------------------------
23
24 export {
25   processActivityPubHttpFetcher
26 }