]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/helpers/custom-validators/activitypub/activity.ts
Optimize signature verification
[github/Chocobozzz/PeerTube.git] / server / helpers / custom-validators / activitypub / activity.ts
CommitLineData
0d0e8dd0 1import * as validator from 'validator'
350e31d6
C
2import { isAccountAcceptActivityValid, isAccountDeleteActivityValid, isAccountFollowActivityValid } from './account'
3import { isActivityPubUrlValid } from './misc'
0d0e8dd0 4import {
20494f12 5 isAnnounceValid,
0d0e8dd0 6 isVideoChannelCreateActivityValid,
350e31d6
C
7 isVideoChannelDeleteActivityValid,
8 isVideoChannelUpdateActivityValid,
d8465018 9 isVideoFlagValid,
0d0e8dd0 10 isVideoTorrentAddActivityValid,
350e31d6
C
11 isVideoTorrentDeleteActivityValid,
12 isVideoTorrentUpdateActivityValid
0d0e8dd0
C
13} from './videos'
14
15function 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 (
350e31d6
C
23 isActivityPubUrlValid(activity.id) &&
24 isActivityPubUrlValid(activity.actor)
0d0e8dd0
C
25 )
26}
27
28function isActivityValid (activity: any) {
29 return isVideoTorrentAddActivityValid(activity) ||
30 isVideoChannelCreateActivityValid(activity) ||
31 isVideoTorrentUpdateActivityValid(activity) ||
350e31d6
C
32 isVideoChannelUpdateActivityValid(activity) ||
33 isVideoTorrentDeleteActivityValid(activity) ||
34 isVideoChannelDeleteActivityValid(activity) ||
35 isAccountDeleteActivityValid(activity) ||
36 isAccountFollowActivityValid(activity) ||
d8465018
C
37 isAccountAcceptActivityValid(activity) ||
38 isVideoFlagValid(activity) ||
20494f12 39 isAnnounceValid(activity)
0d0e8dd0
C
40}
41
42// ---------------------------------------------------------------------------
43
44export {
45 isRootActivityValid,
46 isActivityValid
47}