]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/lib/activitypub/process/process.ts
6135973411c7f373700f9b0d046fdea7805ba0b4
[github/Chocobozzz/PeerTube.git] / server / lib / activitypub / process / process.ts
1 import { Activity, ActivityType } from '../../../../shared/models/activitypub/activity'
2 import { AccountInstance } from '../../../models/account/account-interface'
3 import { processAcceptActivity } from './process-accept'
4 import { processAddActivity } from './process-add'
5 import { processAnnounceActivity } from './process-announce'
6 import { processCreateActivity } from './process-create'
7 import { processDeleteActivity } from './process-delete'
8 import { processFollowActivity } from './process-follow'
9 import { processUndoActivity } from './process-undo'
10 import { processUpdateActivity } from './process-update'
11 import { logger } from '../../../helpers/logger'
12
13 const processActivity: { [ P in ActivityType ]: (activity: Activity, inboxAccount?: AccountInstance) => Promise<any> } = {
14 Create: processCreateActivity,
15 Add: processAddActivity,
16 Update: processUpdateActivity,
17 Delete: processDeleteActivity,
18 Follow: processFollowActivity,
19 Accept: processAcceptActivity,
20 Announce: processAnnounceActivity,
21 Undo: processUndoActivity
22 }
23
24 async function processActivities (activities: Activity[], inboxAccount?: AccountInstance) {
25 for (const activity of activities) {
26 const activityProcessor = processActivity[activity.type]
27 if (activityProcessor === undefined) {
28 logger.warn('Unknown activity type %s.', activity.type, { activityId: activity.id })
29 continue
30 }
31
32 await activityProcessor(activity, inboxAccount)
33 }
34 }
35
36 export {
37 processActivities
38 }