1 import * as validator from 'validator'
2 import { ACTIVITY_PUB, CONSTRAINTS_FIELDS } from '../../../initializers'
3 import { exists, isArray, isDateValid } from '../misc'
4 import { isActivityPubUrlValid, isBaseActivityValid } from './misc'
6 function isVideoCommentCreateActivityValid (activity: any) {
7 return isBaseActivityValid(activity, 'Create') &&
8 sanitizeAndCheckVideoCommentObject(activity.object)
11 function sanitizeAndCheckVideoCommentObject (comment: any) {
12 if (comment.type !== 'Note') return false
14 normalizeComment(comment)
16 return isActivityPubUrlValid(comment.id) &&
17 isCommentContentValid(comment.content) &&
18 isActivityPubUrlValid(comment.inReplyTo) &&
19 isDateValid(comment.published) &&
20 isActivityPubUrlValid(comment.url) &&
21 isArray(comment.to) &&
23 comment.to.indexOf(ACTIVITY_PUB.PUBLIC) !== -1 ||
24 comment.cc.indexOf(ACTIVITY_PUB.PUBLIC) !== -1
25 ) // Only accept public comments
28 function isVideoCommentDeleteActivityValid (activity: any) {
29 return isBaseActivityValid(activity, 'Delete')
32 // ---------------------------------------------------------------------------
35 isVideoCommentCreateActivityValid,
36 isVideoCommentDeleteActivityValid,
37 sanitizeAndCheckVideoCommentObject
40 // ---------------------------------------------------------------------------
42 function isCommentContentValid (content: any) {
43 return exists(content) && validator.isLength('' + content, { min: 1 })
46 function normalizeComment (comment: any) {
49 if (!comment.url || typeof comment.url !== 'string') {
50 comment.url = comment.url.href || comment.url.url