]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/helpers/custom-validators/activitypub/activity.ts
Fetch outbox to grab old activities tests
[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
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
54141398
C
28const activityCheckers: { [ P in ActivityType ]: (activity: Activity) => boolean } = {
29 Create: checkCreateActivity,
30 Add: checkAddActivity,
31 Update: checkUpdateActivity,
32 Delete: checkDeleteActivity,
33 Follow: checkFollowActivity,
34 Accept: checkAcceptActivity,
35 Announce: checkAnnounceActivity,
36 Undo: checkUndoActivity
37}
38
0d0e8dd0 39function isActivityValid (activity: any) {
54141398
C
40 const checker = activityCheckers[activity.type]
41 // Unknown activity type
42 if (!checker) return false
43
44 return checker(activity)
0d0e8dd0
C
45}
46
47// ---------------------------------------------------------------------------
48
49export {
50 isRootActivityValid,
51 isActivityValid
52}
54141398
C
53
54// ---------------------------------------------------------------------------
55
56function checkCreateActivity (activity: any) {
57 return isVideoChannelCreateActivityValid(activity) ||
58 isVideoFlagValid(activity)
59}
60
61function checkAddActivity (activity: any) {
62 return isVideoTorrentAddActivityValid(activity)
63}
64
65function checkUpdateActivity (activity: any) {
66 return isVideoTorrentUpdateActivityValid(activity) ||
67 isVideoChannelUpdateActivityValid(activity)
68}
69
70function checkDeleteActivity (activity: any) {
71 return isVideoTorrentDeleteActivityValid(activity) ||
72 isVideoChannelDeleteActivityValid(activity) ||
73 isAccountDeleteActivityValid(activity)
74}
75
76function checkFollowActivity (activity: any) {
77 return isAccountFollowActivityValid(activity)
78}
79
80function checkAcceptActivity (activity: any) {
81 return isAccountAcceptActivityValid(activity)
82}
83
84function checkAnnounceActivity (activity: any) {
85 return isAnnounceValid(activity)
86}
87
88function checkUndoActivity (activity: any) {
89 return isUndoValid(activity)
90}