]>
Commit | Line | Data |
---|---|---|
94a5ff8a | 1 | import * as kue from 'kue' |
da854ddd C |
2 | import { logger } from '../../../helpers/logger' |
3 | import { doRequest } from '../../../helpers/requests' | |
60650c77 | 4 | import { ActorFollowModel } from '../../../models/activitypub/actor-follow' |
94a5ff8a | 5 | import { buildSignedRequestOptions, computeBody } from './utils/activitypub-http-utils' |
afffe988 | 6 | |
94a5ff8a C |
7 | export type ActivitypubHttpBroadcastPayload = { |
8 | uris: string[] | |
9 | signatureActorId?: number | |
10 | body: any | |
11 | } | |
12 | ||
13 | async function processActivityPubHttpBroadcast (job: kue.Job) { | |
14 | logger.info('Processing ActivityPub broadcast in job %d.', job.id) | |
15 | ||
16 | const payload = job.data as ActivitypubHttpBroadcastPayload | |
afffe988 | 17 | |
63c93323 | 18 | const body = await computeBody(payload) |
e12a0092 | 19 | const httpSignatureOptions = await buildSignedRequestOptions(payload) |
afffe988 C |
20 | |
21 | const options = { | |
22 | method: 'POST', | |
23 | uri: '', | |
e12a0092 C |
24 | json: body, |
25 | httpSignature: httpSignatureOptions | |
afffe988 C |
26 | } |
27 | ||
60650c77 C |
28 | const badUrls: string[] = [] |
29 | const goodUrls: string[] = [] | |
30 | ||
afffe988 C |
31 | for (const uri of payload.uris) { |
32 | options.uri = uri | |
0032ebe9 C |
33 | |
34 | try { | |
35 | await doRequest(options) | |
60650c77 | 36 | goodUrls.push(uri) |
0032ebe9 | 37 | } catch (err) { |
94a5ff8a | 38 | badUrls.push(uri) |
0032ebe9 | 39 | } |
afffe988 | 40 | } |
60650c77 C |
41 | |
42 | return ActorFollowModel.updateActorFollowsScoreAndRemoveBadOnes(goodUrls, badUrls, undefined) | |
afffe988 C |
43 | } |
44 | ||
afffe988 C |
45 | // --------------------------------------------------------------------------- |
46 | ||
47 | export { | |
94a5ff8a | 48 | processActivityPubHttpBroadcast |
afffe988 | 49 | } |