mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-10-05 02:39:33 +02:00
Refractor activity pub lib/helpers
This commit is contained in:
parent
eb8b27c93e
commit
5414139835
47 changed files with 844 additions and 498 deletions
|
@ -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)
|
||||
}
|
||||
|
|
15
server/helpers/custom-validators/activitypub/announce.ts
Normal file
15
server/helpers/custom-validators/activitypub/announce.ts
Normal file
|
@ -0,0 +1,15 @@
|
|||
import { isBaseActivityValid } from './misc'
|
||||
import { isVideoTorrentAddActivityValid } from './videos'
|
||||
import { isVideoChannelCreateActivityValid } from './video-channels'
|
||||
|
||||
function isAnnounceValid (activity: any) {
|
||||
return isBaseActivityValid(activity, 'Announce') &&
|
||||
(
|
||||
isVideoChannelCreateActivityValid(activity.object) ||
|
||||
isVideoTorrentAddActivityValid(activity.object)
|
||||
)
|
||||
}
|
||||
|
||||
export {
|
||||
isAnnounceValid
|
||||
}
|
|
@ -1,5 +1,7 @@
|
|||
export * from './account'
|
||||
export * from './activity'
|
||||
export * from './signature'
|
||||
export * from './misc'
|
||||
export * from './signature'
|
||||
export * from './undo'
|
||||
export * from './video-channels'
|
||||
export * from './videos'
|
||||
|
|
13
server/helpers/custom-validators/activitypub/undo.ts
Normal file
13
server/helpers/custom-validators/activitypub/undo.ts
Normal file
|
@ -0,0 +1,13 @@
|
|||
import { isAccountFollowActivityValid } from './account'
|
||||
import { isBaseActivityValid } from './misc'
|
||||
|
||||
function isUndoValid (activity: any) {
|
||||
return isBaseActivityValid(activity, 'Undo') &&
|
||||
(
|
||||
isAccountFollowActivityValid(activity.object)
|
||||
)
|
||||
}
|
||||
|
||||
export {
|
||||
isUndoValid
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
import { isDateValid, isUUIDValid } from '../misc'
|
||||
import { isVideoChannelDescriptionValid, isVideoChannelNameValid } from '../video-channels'
|
||||
import { isActivityPubUrlValid, isBaseActivityValid } from './misc'
|
||||
|
||||
function isVideoChannelCreateActivityValid (activity: any) {
|
||||
return isBaseActivityValid(activity, 'Create') &&
|
||||
isVideoChannelObjectValid(activity.object)
|
||||
}
|
||||
|
||||
function isVideoChannelUpdateActivityValid (activity: any) {
|
||||
return isBaseActivityValid(activity, 'Update') &&
|
||||
isVideoChannelObjectValid(activity.object)
|
||||
}
|
||||
|
||||
function isVideoChannelDeleteActivityValid (activity: any) {
|
||||
return isBaseActivityValid(activity, 'Delete')
|
||||
}
|
||||
|
||||
function isVideoChannelObjectValid (videoChannel: any) {
|
||||
return videoChannel.type === 'VideoChannel' &&
|
||||
isActivityPubUrlValid(videoChannel.id) &&
|
||||
isVideoChannelNameValid(videoChannel.name) &&
|
||||
isVideoChannelDescriptionValid(videoChannel.content) &&
|
||||
isDateValid(videoChannel.published) &&
|
||||
isDateValid(videoChannel.updated) &&
|
||||
isUUIDValid(videoChannel.uuid)
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
export {
|
||||
isVideoChannelCreateActivityValid,
|
||||
isVideoChannelUpdateActivityValid,
|
||||
isVideoChannelDeleteActivityValid,
|
||||
isVideoChannelObjectValid
|
||||
}
|
|
@ -1,7 +1,6 @@
|
|||
import * as validator from 'validator'
|
||||
import { ACTIVITY_PUB } from '../../../initializers'
|
||||
import { exists, isDateValid, isUUIDValid } from '../misc'
|
||||
import { isVideoChannelDescriptionValid, isVideoChannelNameValid } from '../video-channels'
|
||||
import {
|
||||
isVideoAbuseReasonValid,
|
||||
isVideoDurationValid,
|
||||
|
@ -28,6 +27,13 @@ function isVideoTorrentDeleteActivityValid (activity: any) {
|
|||
return isBaseActivityValid(activity, 'Delete')
|
||||
}
|
||||
|
||||
function isVideoFlagValid (activity: any) {
|
||||
return isBaseActivityValid(activity, 'Create') &&
|
||||
activity.object.type === 'Flag' &&
|
||||
isVideoAbuseReasonValid(activity.object.content) &&
|
||||
isActivityPubUrlValid(activity.object.object)
|
||||
}
|
||||
|
||||
function isActivityPubVideoDurationValid (value: string) {
|
||||
// https://www.w3.org/TR/activitystreams-vocabulary/#dfn-duration
|
||||
return exists(value) &&
|
||||
|
@ -57,57 +63,13 @@ function isVideoTorrentObjectValid (video: any) {
|
|||
video.url.length !== 0
|
||||
}
|
||||
|
||||
function isVideoFlagValid (activity: any) {
|
||||
return isBaseActivityValid(activity, 'Create') &&
|
||||
activity.object.type === 'Flag' &&
|
||||
isVideoAbuseReasonValid(activity.object.content) &&
|
||||
isActivityPubUrlValid(activity.object.object)
|
||||
}
|
||||
|
||||
function isAnnounceValid (activity: any) {
|
||||
return isBaseActivityValid(activity, 'Announce') &&
|
||||
(
|
||||
isVideoChannelCreateActivityValid(activity.object) ||
|
||||
isVideoTorrentAddActivityValid(activity.object)
|
||||
)
|
||||
}
|
||||
|
||||
function isVideoChannelCreateActivityValid (activity: any) {
|
||||
return isBaseActivityValid(activity, 'Create') &&
|
||||
isVideoChannelObjectValid(activity.object)
|
||||
}
|
||||
|
||||
function isVideoChannelUpdateActivityValid (activity: any) {
|
||||
return isBaseActivityValid(activity, 'Update') &&
|
||||
isVideoChannelObjectValid(activity.object)
|
||||
}
|
||||
|
||||
function isVideoChannelDeleteActivityValid (activity: any) {
|
||||
return isBaseActivityValid(activity, 'Delete')
|
||||
}
|
||||
|
||||
function isVideoChannelObjectValid (videoChannel: any) {
|
||||
return videoChannel.type === 'VideoChannel' &&
|
||||
isActivityPubUrlValid(videoChannel.id) &&
|
||||
isVideoChannelNameValid(videoChannel.name) &&
|
||||
isVideoChannelDescriptionValid(videoChannel.content) &&
|
||||
isDateValid(videoChannel.published) &&
|
||||
isDateValid(videoChannel.updated) &&
|
||||
isUUIDValid(videoChannel.uuid)
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
export {
|
||||
isVideoTorrentAddActivityValid,
|
||||
isVideoChannelCreateActivityValid,
|
||||
isVideoTorrentUpdateActivityValid,
|
||||
isVideoChannelUpdateActivityValid,
|
||||
isVideoChannelDeleteActivityValid,
|
||||
isVideoTorrentDeleteActivityValid,
|
||||
isVideoFlagValid,
|
||||
isAnnounceValid,
|
||||
isVideoChannelObjectValid
|
||||
isVideoFlagValid
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue