]>
Commit | Line | Data |
---|---|---|
c729caf6 C |
1 | import validator from 'validator' |
2 | import { CONSTRAINTS_FIELDS } from '@server/initializers/constants' | |
92e66e04 C |
3 | import { buildTaskFileFieldname } from '@server/lib/video-studio' |
4 | import { VideoStudioTask } from '@shared/models' | |
c729caf6 C |
5 | import { isArray } from './misc' |
6 | import { isVideoFileMimeTypeValid, isVideoImageValid } from './videos' | |
4638cd71 | 7 | import { forceNumber } from '@shared/core-utils' |
c729caf6 | 8 | |
92e66e04 | 9 | function isValidStudioTasksArray (tasks: any) { |
c729caf6 C |
10 | if (!isArray(tasks)) return false |
11 | ||
92e66e04 C |
12 | return tasks.length >= CONSTRAINTS_FIELDS.VIDEO_STUDIO.TASKS.min && |
13 | tasks.length <= CONSTRAINTS_FIELDS.VIDEO_STUDIO.TASKS.max | |
c729caf6 C |
14 | } |
15 | ||
92e66e04 | 16 | function isStudioCutTaskValid (task: VideoStudioTask) { |
c729caf6 C |
17 | if (task.name !== 'cut') return false |
18 | if (!task.options) return false | |
19 | ||
20 | const { start, end } = task.options | |
21 | if (!start && !end) return false | |
22 | ||
92e66e04 C |
23 | if (start && !validator.isInt(start + '', CONSTRAINTS_FIELDS.VIDEO_STUDIO.CUT_TIME)) return false |
24 | if (end && !validator.isInt(end + '', CONSTRAINTS_FIELDS.VIDEO_STUDIO.CUT_TIME)) return false | |
c729caf6 C |
25 | |
26 | if (!start || !end) return true | |
27 | ||
4638cd71 | 28 | return forceNumber(start) < forceNumber(end) |
c729caf6 C |
29 | } |
30 | ||
92e66e04 | 31 | function isStudioTaskAddIntroOutroValid (task: VideoStudioTask, indice: number, files: Express.Multer.File[]) { |
c729caf6 C |
32 | const file = files.find(f => f.fieldname === buildTaskFileFieldname(indice, 'file')) |
33 | ||
34 | return (task.name === 'add-intro' || task.name === 'add-outro') && | |
35 | file && isVideoFileMimeTypeValid([ file ], null) | |
36 | } | |
37 | ||
92e66e04 | 38 | function isStudioTaskAddWatermarkValid (task: VideoStudioTask, indice: number, files: Express.Multer.File[]) { |
c729caf6 C |
39 | const file = files.find(f => f.fieldname === buildTaskFileFieldname(indice, 'file')) |
40 | ||
41 | return task.name === 'add-watermark' && | |
42 | file && isVideoImageValid([ file ], null, true) | |
43 | } | |
44 | ||
45 | // --------------------------------------------------------------------------- | |
46 | ||
47 | export { | |
92e66e04 | 48 | isValidStudioTasksArray, |
c729caf6 | 49 | |
92e66e04 C |
50 | isStudioCutTaskValid, |
51 | isStudioTaskAddIntroOutroValid, | |
52 | isStudioTaskAddWatermarkValid | |
c729caf6 | 53 | } |