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