]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/helpers/custom-validators/activitypub/activity.ts
Add hover effect on login/create an account button
[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'
6d852470 8import { isVideoCommentCreateActivityValid } from './video-comments'
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) ||
6d852470
C
62 isVideoFlagValid(activity) ||
63 isVideoCommentCreateActivityValid(activity)
54141398
C
64}
65
54141398 66function checkUpdateActivity (activity: any) {
47564bbe 67 return isVideoTorrentUpdateActivityValid(activity)
54141398
C
68}
69
70function checkDeleteActivity (activity: any) {
71 return isVideoTorrentDeleteActivityValid(activity) ||
50d6de9c 72 isActorDeleteActivityValid(activity)
54141398
C
73}
74
75function checkFollowActivity (activity: any) {
50d6de9c 76 return isActorFollowActivityValid(activity)
54141398
C
77}
78
79function checkAcceptActivity (activity: any) {
50d6de9c 80 return isActorAcceptActivityValid(activity)
54141398
C
81}
82
83function checkAnnounceActivity (activity: any) {
0032ebe9 84 return isAnnounceActivityValid(activity)
54141398
C
85}
86
87function checkUndoActivity (activity: any) {
0032ebe9
C
88 return isUndoActivityValid(activity)
89}
90
91function checkLikeActivity (activity: any) {
92 return isLikeActivityValid(activity)
54141398 93}