diff options
Diffstat (limited to 'server/helpers/custom-validators')
-rw-r--r-- | server/helpers/custom-validators/video-captions.ts | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/server/helpers/custom-validators/video-captions.ts b/server/helpers/custom-validators/video-captions.ts index 528edf60c..4cc7dcaf4 100644 --- a/server/helpers/custom-validators/video-captions.ts +++ b/server/helpers/custom-validators/video-captions.ts | |||
@@ -1,3 +1,5 @@ | |||
1 | import { getFileSize } from '@shared/extra-utils' | ||
2 | import { readFile } from 'fs-extra' | ||
1 | import { CONSTRAINTS_FIELDS, MIMETYPES, VIDEO_LANGUAGES } from '../../initializers/constants' | 3 | import { CONSTRAINTS_FIELDS, MIMETYPES, VIDEO_LANGUAGES } from '../../initializers/constants' |
2 | import { exists, isFileValid } from './misc' | 4 | import { exists, isFileValid } from './misc' |
3 | 5 | ||
@@ -13,9 +15,20 @@ function isVideoCaptionFile (files: { [ fieldname: string ]: Express.Multer.File | |||
13 | return isFileValid(files, videoCaptionTypesRegex, field, CONSTRAINTS_FIELDS.VIDEO_CAPTIONS.CAPTION_FILE.FILE_SIZE.max) | 15 | return isFileValid(files, videoCaptionTypesRegex, field, CONSTRAINTS_FIELDS.VIDEO_CAPTIONS.CAPTION_FILE.FILE_SIZE.max) |
14 | } | 16 | } |
15 | 17 | ||
18 | async function isVTTFileValid (filePath: string) { | ||
19 | const size = await getFileSize(filePath) | ||
20 | |||
21 | if (size > CONSTRAINTS_FIELDS.VIDEO_CAPTIONS.CAPTION_FILE.FILE_SIZE.max) return false | ||
22 | |||
23 | const content = await readFile(filePath, 'utf8') | ||
24 | |||
25 | return content?.startsWith('WEBVTT\n') | ||
26 | } | ||
27 | |||
16 | // --------------------------------------------------------------------------- | 28 | // --------------------------------------------------------------------------- |
17 | 29 | ||
18 | export { | 30 | export { |
19 | isVideoCaptionFile, | 31 | isVideoCaptionFile, |
32 | isVTTFileValid, | ||
20 | isVideoCaptionLanguageValid | 33 | isVideoCaptionLanguageValid |
21 | } | 34 | } |