]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/helpers/custom-validators/activitypub/activity.ts
08e5ae0aad6b8e0052187aeb4fabe25f95be3433
[github/Chocobozzz/PeerTube.git] / server / helpers / custom-validators / activitypub / activity.ts
1 import * as validator from 'validator'
2 import { isAccountAcceptActivityValid, isAccountDeleteActivityValid, isAccountFollowActivityValid } from './account'
3 import { isActivityPubUrlValid } from './misc'
4 import {
5 isVideoAnnounceValid,
6 isVideoChannelAnnounceValid,
7 isVideoChannelCreateActivityValid,
8 isVideoChannelDeleteActivityValid,
9 isVideoChannelUpdateActivityValid,
10 isVideoFlagValid,
11 isVideoTorrentAddActivityValid,
12 isVideoTorrentDeleteActivityValid,
13 isVideoTorrentUpdateActivityValid
14 } from './videos'
15
16 function isRootActivityValid (activity: any) {
17 return Array.isArray(activity['@context']) &&
18 (
19 (activity.type === 'Collection' || activity.type === 'OrderedCollection') &&
20 validator.isInt(activity.totalItems, { min: 0 }) &&
21 Array.isArray(activity.items)
22 ) ||
23 (
24 isActivityPubUrlValid(activity.id) &&
25 isActivityPubUrlValid(activity.actor)
26 )
27 }
28
29 function isActivityValid (activity: any) {
30 return isVideoTorrentAddActivityValid(activity) ||
31 isVideoChannelCreateActivityValid(activity) ||
32 isVideoTorrentUpdateActivityValid(activity) ||
33 isVideoChannelUpdateActivityValid(activity) ||
34 isVideoTorrentDeleteActivityValid(activity) ||
35 isVideoChannelDeleteActivityValid(activity) ||
36 isAccountDeleteActivityValid(activity) ||
37 isAccountFollowActivityValid(activity) ||
38 isAccountAcceptActivityValid(activity) ||
39 isVideoFlagValid(activity) ||
40 isVideoAnnounceValid(activity) ||
41 isVideoChannelAnnounceValid(activity)
42 }
43
44 // ---------------------------------------------------------------------------
45
46 export {
47 isRootActivityValid,
48 isActivityValid
49 }