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