]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/helpers/custom-validators/activitypub/activity.ts
Add totalLocalVideoFilesSize in stats
[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'
4bbc373f 3import {
c48e82b5
C
4 isActorAcceptActivityValid,
5 isActorDeleteActivityValid,
6 isActorFollowActivityValid,
7 isActorRejectActivityValid,
4bbc373f
C
8 isActorUpdateActivityValid
9} from './actor'
0032ebe9 10import { isAnnounceActivityValid } from './announce'
350e31d6 11import { isActivityPubUrlValid } from './misc'
3fd3ab2d 12import { isDislikeActivityValid, isLikeActivityValid } from './rate'
0032ebe9 13import { isUndoActivityValid } from './undo'
4cb6d457 14import { isVideoCommentCreateActivityValid, isVideoCommentDeleteActivityValid } from './video-comments'
0d0e8dd0 15import {
d8465018 16 isVideoFlagValid,
350e31d6 17 isVideoTorrentDeleteActivityValid,
c48e82b5 18 sanitizeAndCheckVideoTorrentCreateActivity,
1d6e5dfc 19 sanitizeAndCheckVideoTorrentUpdateActivity
0d0e8dd0 20} from './videos'
40ff5707 21import { isViewActivityValid } from './view'
bcec136e 22import { exists } from '../misc'
c48e82b5 23import { isCacheFileCreateActivityValid, isCacheFileUpdateActivityValid } from './cache-file'
0d0e8dd0
C
24
25function isRootActivityValid (activity: any) {
f6a7c82c 26 return Array.isArray(activity['@context']) && (
0d0e8dd0
C
27 (
28 (activity.type === 'Collection' || activity.type === 'OrderedCollection') &&
29 validator.isInt(activity.totalItems, { min: 0 }) &&
30 Array.isArray(activity.items)
31 ) ||
32 (
350e31d6 33 isActivityPubUrlValid(activity.id) &&
bcec136e 34 exists(activity.actor) &&
6be84cbc 35 (isActivityPubUrlValid(activity.actor) || isActivityPubUrlValid(activity.actor.id))
0d0e8dd0 36 )
f6a7c82c 37 )
0d0e8dd0
C
38}
39
54141398
C
40const activityCheckers: { [ P in ActivityType ]: (activity: Activity) => boolean } = {
41 Create: checkCreateActivity,
54141398
C
42 Update: checkUpdateActivity,
43 Delete: checkDeleteActivity,
44 Follow: checkFollowActivity,
45 Accept: checkAcceptActivity,
4bbc373f 46 Reject: checkRejectActivity,
54141398 47 Announce: checkAnnounceActivity,
0032ebe9
C
48 Undo: checkUndoActivity,
49 Like: checkLikeActivity
54141398
C
50}
51
0d0e8dd0 52function isActivityValid (activity: any) {
54141398
C
53 const checker = activityCheckers[activity.type]
54 // Unknown activity type
55 if (!checker) return false
56
57 return checker(activity)
0d0e8dd0
C
58}
59
60// ---------------------------------------------------------------------------
61
62export {
63 isRootActivityValid,
64 isActivityValid
65}
54141398
C
66
67// ---------------------------------------------------------------------------
68
69function checkCreateActivity (activity: any) {
0032ebe9
C
70 return isViewActivityValid(activity) ||
71 isDislikeActivityValid(activity) ||
1d6e5dfc 72 sanitizeAndCheckVideoTorrentCreateActivity(activity) ||
6d852470 73 isVideoFlagValid(activity) ||
c48e82b5
C
74 isVideoCommentCreateActivityValid(activity) ||
75 isCacheFileCreateActivityValid(activity)
54141398
C
76}
77
54141398 78function checkUpdateActivity (activity: any) {
c48e82b5
C
79 return isCacheFileUpdateActivityValid(activity) ||
80 sanitizeAndCheckVideoTorrentUpdateActivity(activity) ||
265ba139 81 isActorUpdateActivityValid(activity)
54141398
C
82}
83
84function checkDeleteActivity (activity: any) {
85 return isVideoTorrentDeleteActivityValid(activity) ||
4cb6d457
C
86 isActorDeleteActivityValid(activity) ||
87 isVideoCommentDeleteActivityValid(activity)
54141398
C
88}
89
90function checkFollowActivity (activity: any) {
50d6de9c 91 return isActorFollowActivityValid(activity)
54141398
C
92}
93
94function checkAcceptActivity (activity: any) {
50d6de9c 95 return isActorAcceptActivityValid(activity)
54141398
C
96}
97
4bbc373f
C
98function checkRejectActivity (activity: any) {
99 return isActorRejectActivityValid(activity)
100}
101
54141398 102function checkAnnounceActivity (activity: any) {
0032ebe9 103 return isAnnounceActivityValid(activity)
54141398
C
104}
105
106function checkUndoActivity (activity: any) {
0032ebe9
C
107 return isUndoActivityValid(activity)
108}
109
110function checkLikeActivity (activity: any) {
111 return isLikeActivityValid(activity)
54141398 112}