X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fhelpers%2Fcustom-validators%2Factivitypub%2Factivity.ts;h=632f1422317c19ccc6c0aecb758e0a29cb037755;hb=e8cb44090e654fda339506dccfcec7fea8722723;hp=b5ba0f7af75f03d233c9465d7b5fd2a71e7e1305;hpb=350e31d6b64e4973dfa5e9f7b46841cb09aeb1ad;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/helpers/custom-validators/activitypub/activity.ts b/server/helpers/custom-validators/activitypub/activity.ts index b5ba0f7af..632f14223 100644 --- a/server/helpers/custom-validators/activitypub/activity.ts +++ b/server/helpers/custom-validators/activitypub/activity.ts @@ -1,14 +1,21 @@ import * as validator from 'validator' -import { isAccountAcceptActivityValid, isAccountDeleteActivityValid, isAccountFollowActivityValid } from './account' +import { Activity, ActivityType } from '../../../../shared/models/activitypub' +import { + isActorAcceptActivityValid, isActorDeleteActivityValid, isActorFollowActivityValid, isActorRejectActivityValid, + isActorUpdateActivityValid +} from './actor' +import { isAnnounceActivityValid } from './announce' import { isActivityPubUrlValid } from './misc' +import { isDislikeActivityValid, isLikeActivityValid } from './rate' +import { isUndoActivityValid } from './undo' +import { isVideoCommentCreateActivityValid, isVideoCommentDeleteActivityValid } from './video-comments' import { - isVideoChannelCreateActivityValid, - isVideoChannelDeleteActivityValid, - isVideoChannelUpdateActivityValid, - isVideoTorrentAddActivityValid, + isVideoFlagValid, + isVideoTorrentCreateActivityValid, isVideoTorrentDeleteActivityValid, isVideoTorrentUpdateActivityValid } from './videos' +import { isViewActivityValid } from './view' function isRootActivityValid (activity: any) { return Array.isArray(activity['@context']) && @@ -23,16 +30,24 @@ function isRootActivityValid (activity: any) { ) } +const activityCheckers: { [ P in ActivityType ]: (activity: Activity) => boolean } = { + Create: checkCreateActivity, + Update: checkUpdateActivity, + Delete: checkDeleteActivity, + Follow: checkFollowActivity, + Accept: checkAcceptActivity, + Reject: checkRejectActivity, + Announce: checkAnnounceActivity, + Undo: checkUndoActivity, + Like: checkLikeActivity +} + function isActivityValid (activity: any) { - return isVideoTorrentAddActivityValid(activity) || - isVideoChannelCreateActivityValid(activity) || - isVideoTorrentUpdateActivityValid(activity) || - isVideoChannelUpdateActivityValid(activity) || - isVideoTorrentDeleteActivityValid(activity) || - isVideoChannelDeleteActivityValid(activity) || - isAccountDeleteActivityValid(activity) || - isAccountFollowActivityValid(activity) || - isAccountAcceptActivityValid(activity) + const checker = activityCheckers[activity.type] + // Unknown activity type + if (!checker) return false + + return checker(activity) } // --------------------------------------------------------------------------- @@ -41,3 +56,48 @@ export { isRootActivityValid, isActivityValid } + +// --------------------------------------------------------------------------- + +function checkCreateActivity (activity: any) { + return isViewActivityValid(activity) || + isDislikeActivityValid(activity) || + isVideoTorrentCreateActivityValid(activity) || + isVideoFlagValid(activity) || + isVideoCommentCreateActivityValid(activity) +} + +function checkUpdateActivity (activity: any) { + return isVideoTorrentUpdateActivityValid(activity) || + isActorUpdateActivityValid(activity) +} + +function checkDeleteActivity (activity: any) { + return isVideoTorrentDeleteActivityValid(activity) || + isActorDeleteActivityValid(activity) || + isVideoCommentDeleteActivityValid(activity) +} + +function checkFollowActivity (activity: any) { + return isActorFollowActivityValid(activity) +} + +function checkAcceptActivity (activity: any) { + return isActorAcceptActivityValid(activity) +} + +function checkRejectActivity (activity: any) { + return isActorRejectActivityValid(activity) +} + +function checkAnnounceActivity (activity: any) { + return isAnnounceActivityValid(activity) +} + +function checkUndoActivity (activity: any) { + return isUndoActivityValid(activity) +} + +function checkLikeActivity (activity: any) { + return isLikeActivityValid(activity) +}