process.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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. const processActivity: { [ P in ActivityType ]: (activity: Activity, inboxAccount?: AccountInstance) => Promise<any> } = {
  13. Create: processCreateActivity,
  14. Add: processAddActivity,
  15. Update: processUpdateActivity,
  16. Delete: processDeleteActivity,
  17. Follow: processFollowActivity,
  18. Accept: processAcceptActivity,
  19. Announce: processAnnounceActivity,
  20. Undo: processUndoActivity
  21. }
  22. async function processActivities (activities: Activity[], inboxAccount?: AccountInstance) {
  23. for (const activity of activities) {
  24. const activityProcessor = processActivity[activity.type]
  25. if (activityProcessor === undefined) {
  26. logger.warn('Unknown activity type %s.', activity.type, { activityId: activity.id })
  27. continue
  28. }
  29. await activityProcessor(activity, inboxAccount)
  30. }
  31. }
  32. export {
  33. processActivities
  34. }