]>
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 |
edbc9325 | 7 | const ABUSE_MESSAGES_CONSTRAINTS_FIELDS = CONSTRAINTS_FIELDS.ABUSE_MESSAGES |
d95d1559 C |
8 | |
9 | function isAbuseReasonValid (value: string) { | |
310b5219 | 10 | return exists(value) && validator.isLength(value, ABUSES_CONSTRAINTS_FIELDS.REASON) |
d95d1559 C |
11 | } |
12 | ||
13 | function isAbusePredefinedReasonValid (value: AbusePredefinedReasonsString) { | |
14 | return exists(value) && value in abusePredefinedReasonsMap | |
15 | } | |
16 | ||
57f6896f C |
17 | function isAbuseFilterValid (value: AbuseFilter) { |
18 | return value === 'video' || value === 'comment' || value === 'account' | |
19 | } | |
20 | ||
21 | function areAbusePredefinedReasonsValid (value: AbusePredefinedReasonsString[]) { | |
d95d1559 C |
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 }) { | |
57f6896f C |
30 | const startAt = (req.body as AbuseCreate).video.startAt |
31 | ||
32 | return exists(startAt) && endAt > startAt | |
d95d1559 C |
33 | } |
34 | ||
35 | function isAbuseModerationCommentValid (value: string) { | |
310b5219 | 36 | return exists(value) && validator.isLength(value, ABUSES_CONSTRAINTS_FIELDS.MODERATION_COMMENT) |
d95d1559 C |
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 | ||
edbc9325 C |
50 | function isAbuseMessageValid (value: string) { |
51 | return exists(value) && validator.isLength(value, ABUSE_MESSAGES_CONSTRAINTS_FIELDS.MESSAGE) | |
52 | } | |
53 | ||
d95d1559 C |
54 | // --------------------------------------------------------------------------- |
55 | ||
56 | export { | |
57 | isAbuseReasonValid, | |
57f6896f | 58 | isAbuseFilterValid, |
d95d1559 | 59 | isAbusePredefinedReasonValid, |
edbc9325 C |
60 | isAbuseMessageValid, |
61 | areAbusePredefinedReasonsValid, | |
d95d1559 C |
62 | isAbuseTimestampValid, |
63 | isAbuseTimestampCoherent, | |
64 | isAbuseModerationCommentValid, | |
65 | isAbuseStateValid, | |
66 | isAbuseVideoIsValid | |
67 | } |