1 import { logger } from '../../../helpers'
2 import { doRequest } from '../../../helpers/requests'
3 import { ActivityPubHttpPayload, maybeRetryRequestLater } from './activitypub-http-job-scheduler'
4 import { database as db } from '../../../initializers/database'
5 import { buildSignedActivity } from '../../../helpers/activitypub'
7 async function process (payload: ActivityPubHttpPayload, jobId: number) {
8 logger.info('Processing ActivityPub unicast in job %d.', jobId)
10 const accountSignature = await db.Account.load(payload.signatureAccountId)
11 if (!accountSignature) throw new Error('Unknown signature account id.')
13 const signedBody = await buildSignedActivity(accountSignature, payload.body)
14 const uri = payload.uris[0]
22 await doRequest(options)
24 await maybeRetryRequestLater(err, payload, uri)
29 function onError (err: Error, jobId: number) {
30 logger.error('Error when sending ActivityPub request in job %d.', jobId, err)
31 return Promise.resolve()
34 function onSuccess (jobId: number) {
35 logger.info('Job %d is a success.', jobId)
36 return Promise.resolve()
39 // ---------------------------------------------------------------------------