import { LiveVideoLatencyMode, VideoState } from '../../../../shared/models/videos'
import { ACTIVITY_PUB, CONSTRAINTS_FIELDS } from '../../../initializers/constants'
import { peertubeTruncate } from '../../core-utils'
-import { exists, isArray, isBooleanValid, isDateValid, isUUIDValid } from '../misc'
+import { isArray, isBooleanValid, isDateValid, isUUIDValid } from '../misc'
import { isLiveLatencyModeValid } from '../video-lives'
import {
+ isVideoDescriptionValid,
isVideoDurationValid,
isVideoNameValid,
isVideoStateValid,
isVideoTagValid,
- isVideoTruncatedDescriptionValid,
isVideoViewsValid
} from '../videos'
-import { isActivityPubUrlValid, isBaseActivityValid, setValidAttributedTo } from './misc'
+import { isActivityPubUrlValid, isActivityPubVideoDurationValid, isBaseActivityValid, setValidAttributedTo } from './misc'
function sanitizeAndCheckVideoTorrentUpdateActivity (activity: any) {
return isBaseActivityValid(activity, 'Update') &&
sanitizeAndCheckVideoTorrentObject(activity.object)
}
-function isActivityPubVideoDurationValid (value: string) {
- // https://www.w3.org/TR/activitystreams-vocabulary/#dfn-duration
- return exists(value) &&
- typeof value === 'string' &&
- value.startsWith('PT') &&
- value.endsWith('S') &&
- isVideoDurationValid(value.replace(/[^0-9]+/g, ''))
-}
-
function sanitizeAndCheckVideoTorrentObject (video: any) {
if (!video || video.type !== 'Video') return false
logger.debug('Video has invalid urls', { video })
return false
}
- if (!setRemoteVideoTruncatedContent(video)) {
+ if (!setRemoteVideoContent(video)) {
logger.debug('Video has invalid content', { video })
return false
}
return isActivityPubUrlValid(video.id) &&
isVideoNameValid(video.name) &&
isActivityPubVideoDurationValid(video.duration) &&
+ isVideoDurationValid(video.duration.replace(/[^0-9]+/g, '')) &&
isUUIDValid(video.uuid) &&
(!video.category || isRemoteNumberIdentifierValid(video.category)) &&
(!video.licence || isRemoteNumberIdentifierValid(video.licence)) &&
}
function isRemoteVideoContentValid (mediaType: string, content: string) {
- return mediaType === 'text/markdown' && isVideoTruncatedDescriptionValid(content)
+ return mediaType === 'text/markdown' && isVideoDescriptionValid(content)
}
function setValidRemoteIcon (video: any) {
return true
}
-function setRemoteVideoTruncatedContent (video: any) {
+function setRemoteVideoContent (video: any) {
if (video.content) {
- video.content = peertubeTruncate(video.content, { length: CONSTRAINTS_FIELDS.VIDEOS.TRUNCATED_DESCRIPTION.max })
+ video.content = peertubeTruncate(video.content, { length: CONSTRAINTS_FIELDS.VIDEOS.DESCRIPTION.max })
}
return true