]>
Commit | Line | Data |
---|---|---|
1 | import validator from 'validator' | |
2 | import { AbuseFilter, abusePredefinedReasonsMap, AbusePredefinedReasonsString, AbuseVideoIs, AbuseCreate } from '@shared/models' | |
3 | import { ABUSE_STATES, CONSTRAINTS_FIELDS } from '../../initializers/constants' | |
4 | import { exists, isArray } from './misc' | |
5 | ||
6 | const ABUSES_CONSTRAINTS_FIELDS = CONSTRAINTS_FIELDS.ABUSES | |
7 | const ABUSE_MESSAGES_CONSTRAINTS_FIELDS = CONSTRAINTS_FIELDS.ABUSE_MESSAGES | |
8 | ||
9 | function isAbuseReasonValid (value: string) { | |
10 | return exists(value) && validator.isLength(value, ABUSES_CONSTRAINTS_FIELDS.REASON) | |
11 | } | |
12 | ||
13 | function isAbusePredefinedReasonValid (value: AbusePredefinedReasonsString) { | |
14 | return exists(value) && value in abusePredefinedReasonsMap | |
15 | } | |
16 | ||
17 | function isAbuseFilterValid (value: AbuseFilter) { | |
18 | return value === 'video' || value === 'comment' || value === 'account' | |
19 | } | |
20 | ||
21 | function areAbusePredefinedReasonsValid (value: AbusePredefinedReasonsString[]) { | |
22 | return exists(value) && isArray(value) && value.every(v => v in abusePredefinedReasonsMap) | |
23 | } | |
24 | ||
25 | function isAbuseTimestampValid (value: number) { | |
26 | return value === null || (exists(value) && validator.isInt('' + value, { min: 0 })) | |
27 | } | |
28 | ||
29 | function isAbuseTimestampCoherent (endAt: number, { req }) { | |
30 | const startAt = (req.body as AbuseCreate).video.startAt | |
31 | ||
32 | return exists(startAt) && endAt > startAt | |
33 | } | |
34 | ||
35 | function isAbuseModerationCommentValid (value: string) { | |
36 | return exists(value) && validator.isLength(value, ABUSES_CONSTRAINTS_FIELDS.MODERATION_COMMENT) | |
37 | } | |
38 | ||
39 | function isAbuseStateValid (value: string) { | |
40 | return exists(value) && ABUSE_STATES[value] !== undefined | |
41 | } | |
42 | ||
43 | function isAbuseVideoIsValid (value: AbuseVideoIs) { | |
44 | return exists(value) && ( | |
45 | value === 'deleted' || | |
46 | value === 'blacklisted' | |
47 | ) | |
48 | } | |
49 | ||
50 | function isAbuseMessageValid (value: string) { | |
51 | return exists(value) && validator.isLength(value, ABUSE_MESSAGES_CONSTRAINTS_FIELDS.MESSAGE) | |
52 | } | |
53 | ||
54 | // --------------------------------------------------------------------------- | |
55 | ||
56 | export { | |
57 | isAbuseReasonValid, | |
58 | isAbuseFilterValid, | |
59 | isAbusePredefinedReasonValid, | |
60 | isAbuseMessageValid, | |
61 | areAbusePredefinedReasonsValid, | |
62 | isAbuseTimestampValid, | |
63 | isAbuseTimestampCoherent, | |
64 | isAbuseModerationCommentValid, | |
65 | isAbuseStateValid, | |
66 | isAbuseVideoIsValid | |
67 | } |