]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/helpers/custom-validators/activitypub/activity.ts
Begin moving video channel to actor
[github/Chocobozzz/PeerTube.git] / server / helpers / custom-validators / activitypub / activity.ts
CommitLineData
0d0e8dd0 1import * as validator from 'validator'
3fd3ab2d 2import { Activity, ActivityType } from '../../../../shared/models/activitypub'
50d6de9c 3import { isActorAcceptActivityValid, isActorDeleteActivityValid, isActorFollowActivityValid } from './actor'
0032ebe9 4import { isAnnounceActivityValid } from './announce'
350e31d6 5import { isActivityPubUrlValid } from './misc'
3fd3ab2d 6import { isDislikeActivityValid, isLikeActivityValid } from './rate'
0032ebe9 7import { isUndoActivityValid } from './undo'
50d6de9c 8import { isVideoChannelDeleteActivityValid, isVideoChannelUpdateActivityValid } from './video-channels'
0d0e8dd0 9import {
d8465018 10 isVideoFlagValid,
50d6de9c 11 isVideoTorrentCreateActivityValid,
350e31d6
C
12 isVideoTorrentDeleteActivityValid,
13 isVideoTorrentUpdateActivityValid
0d0e8dd0 14} from './videos'
40ff5707 15import { isViewActivityValid } from './view'
0d0e8dd0
C
16
17function isRootActivityValid (activity: any) {
18 return Array.isArray(activity['@context']) &&
19 (
20 (activity.type === 'Collection' || activity.type === 'OrderedCollection') &&
21 validator.isInt(activity.totalItems, { min: 0 }) &&
22 Array.isArray(activity.items)
23 ) ||
24 (
350e31d6
C
25 isActivityPubUrlValid(activity.id) &&
26 isActivityPubUrlValid(activity.actor)
0d0e8dd0
C
27 )
28}
29
54141398
C
30const activityCheckers: { [ P in ActivityType ]: (activity: Activity) => boolean } = {
31 Create: checkCreateActivity,
54141398
C
32 Update: checkUpdateActivity,
33 Delete: checkDeleteActivity,
34 Follow: checkFollowActivity,
35 Accept: checkAcceptActivity,
36 Announce: checkAnnounceActivity,
0032ebe9
C
37 Undo: checkUndoActivity,
38 Like: checkLikeActivity
54141398
C
39}
40
0d0e8dd0 41function isActivityValid (activity: any) {
54141398
C
42 const checker = activityCheckers[activity.type]
43 // Unknown activity type
44 if (!checker) return false
45
46 return checker(activity)
0d0e8dd0
C
47}
48
49// ---------------------------------------------------------------------------
50
51export {
52 isRootActivityValid,
53 isActivityValid
54}
54141398
C
55
56// ---------------------------------------------------------------------------
57
58function checkCreateActivity (activity: any) {
0032ebe9
C
59 return isViewActivityValid(activity) ||
60 isDislikeActivityValid(activity) ||
50d6de9c 61 isVideoTorrentCreateActivityValid(activity) ||
0032ebe9 62 isVideoFlagValid(activity)
54141398
C
63}
64
54141398
C
65function checkUpdateActivity (activity: any) {
66 return isVideoTorrentUpdateActivityValid(activity) ||
67 isVideoChannelUpdateActivityValid(activity)
68}
69
70function checkDeleteActivity (activity: any) {
71 return isVideoTorrentDeleteActivityValid(activity) ||
72 isVideoChannelDeleteActivityValid(activity) ||
50d6de9c 73 isActorDeleteActivityValid(activity)
54141398
C
74}
75
76function checkFollowActivity (activity: any) {
50d6de9c 77 return isActorFollowActivityValid(activity)
54141398
C
78}
79
80function checkAcceptActivity (activity: any) {
50d6de9c 81 return isActorAcceptActivityValid(activity)
54141398
C
82}
83
84function checkAnnounceActivity (activity: any) {
0032ebe9 85 return isAnnounceActivityValid(activity)
54141398
C
86}
87
88function checkUndoActivity (activity: any) {
0032ebe9
C
89 return isUndoActivityValid(activity)
90}
91
92function checkLikeActivity (activity: any) {
93 return isLikeActivityValid(activity)
54141398 94}