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