From 54141398354e6e7b94aa3065a705a1251390111c Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 20 Nov 2017 09:43:39 +0100 Subject: Refractor activity pub lib/helpers --- .../custom-validators/activitypub/activity.ts | 73 +++++++++++++++++----- 1 file changed, 58 insertions(+), 15 deletions(-) (limited to 'server/helpers/custom-validators/activitypub/activity.ts') diff --git a/server/helpers/custom-validators/activitypub/activity.ts b/server/helpers/custom-validators/activitypub/activity.ts index 8084cf7b0..9305e092c 100644 --- a/server/helpers/custom-validators/activitypub/activity.ts +++ b/server/helpers/custom-validators/activitypub/activity.ts @@ -1,11 +1,11 @@ import * as validator from 'validator' +import { Activity, ActivityType } from '../../../../shared/models/activitypub/activity' import { isAccountAcceptActivityValid, isAccountDeleteActivityValid, isAccountFollowActivityValid } from './account' +import { isAnnounceValid } from './announce' import { isActivityPubUrlValid } from './misc' +import { isUndoValid } from './undo' +import { isVideoChannelCreateActivityValid, isVideoChannelDeleteActivityValid, isVideoChannelUpdateActivityValid } from './video-channels' import { - isAnnounceValid, - isVideoChannelCreateActivityValid, - isVideoChannelDeleteActivityValid, - isVideoChannelUpdateActivityValid, isVideoFlagValid, isVideoTorrentAddActivityValid, isVideoTorrentDeleteActivityValid, @@ -25,18 +25,23 @@ function isRootActivityValid (activity: any) { ) } +const activityCheckers: { [ P in ActivityType ]: (activity: Activity) => boolean } = { + Create: checkCreateActivity, + Add: checkAddActivity, + Update: checkUpdateActivity, + Delete: checkDeleteActivity, + Follow: checkFollowActivity, + Accept: checkAcceptActivity, + Announce: checkAnnounceActivity, + Undo: checkUndoActivity +} + function isActivityValid (activity: any) { - return isVideoTorrentAddActivityValid(activity) || - isVideoChannelCreateActivityValid(activity) || - isVideoTorrentUpdateActivityValid(activity) || - isVideoChannelUpdateActivityValid(activity) || - isVideoTorrentDeleteActivityValid(activity) || - isVideoChannelDeleteActivityValid(activity) || - isAccountDeleteActivityValid(activity) || - isAccountFollowActivityValid(activity) || - isAccountAcceptActivityValid(activity) || - isVideoFlagValid(activity) || - isAnnounceValid(activity) + const checker = activityCheckers[activity.type] + // Unknown activity type + if (!checker) return false + + return checker(activity) } // --------------------------------------------------------------------------- @@ -45,3 +50,41 @@ export { isRootActivityValid, isActivityValid } + +// --------------------------------------------------------------------------- + +function checkCreateActivity (activity: any) { + return isVideoChannelCreateActivityValid(activity) || + isVideoFlagValid(activity) +} + +function checkAddActivity (activity: any) { + return isVideoTorrentAddActivityValid(activity) +} + +function checkUpdateActivity (activity: any) { + return isVideoTorrentUpdateActivityValid(activity) || + isVideoChannelUpdateActivityValid(activity) +} + +function checkDeleteActivity (activity: any) { + return isVideoTorrentDeleteActivityValid(activity) || + isVideoChannelDeleteActivityValid(activity) || + isAccountDeleteActivityValid(activity) +} + +function checkFollowActivity (activity: any) { + return isAccountFollowActivityValid(activity) +} + +function checkAcceptActivity (activity: any) { + return isAccountAcceptActivityValid(activity) +} + +function checkAnnounceActivity (activity: any) { + return isAnnounceValid(activity) +} + +function checkUndoActivity (activity: any) { + return isUndoValid(activity) +} -- cgit v1.2.3