Fix player play exception on chromium
[oweals/peertube.git] / server / lib / activitypub / process / process.ts
1 import { Activity, ActivityType } from '../../../../shared/models/activitypub'
2 import { logger } from '../../../helpers'
3 import { ActorModel } from '../../../models/activitypub/actor'
4 import { processAcceptActivity } from './process-accept'
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 { processLikeActivity } from './process-like'
10 import { processUndoActivity } from './process-undo'
11 import { processUpdateActivity } from './process-update'
12
13 const processActivity: { [ P in ActivityType ]: (activity: Activity, inboxActor?: ActorModel) => Promise<any> } = {
14   Create: processCreateActivity,
15   Update: processUpdateActivity,
16   Delete: processDeleteActivity,
17   Follow: processFollowActivity,
18   Accept: processAcceptActivity,
19   Announce: processAnnounceActivity,
20   Undo: processUndoActivity,
21   Like: processLikeActivity
22 }
23
24 async function processActivities (activities: Activity[], signatureActor?: ActorModel, inboxActor?: ActorModel) {
25   for (const activity of activities) {
26     // When we fetch remote data, we don't have signature
27     if (signatureActor && activity.actor !== signatureActor.url) {
28       logger.warn('Signature mismatch between %s and %s.', activity.actor, signatureActor.url)
29       continue
30     }
31
32     const activityProcessor = processActivity[activity.type]
33     if (activityProcessor === undefined) {
34       logger.warn('Unknown activity type %s.', activity.type, { activityId: activity.id })
35       continue
36     }
37
38     try {
39       await activityProcessor(activity, inboxActor)
40     } catch (err) {
41       logger.warn('Cannot process activity %s.', activity.type, err)
42     }
43   }
44 }
45
46 export {
47   processActivities
48 }