1 import { logger } from '../../../helpers/logger'
2 import { doRequest } from '../../../helpers/requests'
3 import { ACTIVITY_PUB } from '../../../initializers'
4 import { processActivities } from '../../activitypub/process'
5 import { ActivityPubHttpPayload } from './activitypub-http-job-scheduler'
7 async function process (payload: ActivityPubHttpPayload, jobId: number) {
8 logger.info('Processing ActivityPub fetcher in job %d.', jobId)
17 for (const uri of payload.uris) {
19 logger.info('Fetching ActivityPub data on %s.', uri)
21 const response = await doRequest(options)
22 const firstBody = response.body
24 if (firstBody.first && Array.isArray(firstBody.first.orderedItems)) {
25 const activities = firstBody.first.orderedItems
27 logger.info('Processing %i items ActivityPub fetcher for %s.', activities.length, options.uri)
29 await processActivities(activities)
32 let limit = ACTIVITY_PUB.FETCH_PAGE_LIMIT
34 let nextLink = firstBody.first.next
35 while (nextLink && i < limit) {
36 options.uri = nextLink
38 const { body } = await doRequest(options)
42 if (Array.isArray(body.orderedItems)) {
43 const activities = body.orderedItems
44 logger.info('Processing %i items ActivityPub fetcher for %s.', activities.length, options.uri)
46 await processActivities(activities)
52 function onError (err: Error, jobId: number) {
53 logger.error('Error when fetcher ActivityPub request in job %d.', jobId, err)
54 return Promise.resolve()
57 function onSuccess (jobId: number) {
58 logger.info('Job %d is a success.', jobId)
59 return Promise.resolve()
62 // ---------------------------------------------------------------------------