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