]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/helpers/custom-validators/video-imports.ts
Add ability to search playlists
[github/Chocobozzz/PeerTube.git] / server / helpers / custom-validators / video-imports.ts
CommitLineData
fbad87b0 1import 'multer'
7cde3b9c 2import validator from 'validator'
74dc3bca 3import { CONSTRAINTS_FIELDS, MIMETYPES, VIDEO_IMPORT_STATES } from '../../initializers/constants'
990b6a0b 4import { exists, isFileValid } from './misc'
fbad87b0
C
5
6function isVideoImportTargetUrlValid (url: string) {
7 const isURLOptions = {
8 require_host: true,
9 require_tld: true,
10 require_protocol: true,
11 require_valid_protocol: true,
12 protocols: [ 'http', 'https' ]
13 }
14
15 return exists(url) &&
16 validator.isURL('' + url, isURLOptions) &&
17 validator.isLength('' + url, CONSTRAINTS_FIELDS.VIDEO_IMPORTS.URL)
18}
19
20function isVideoImportStateValid (value: any) {
a1587156 21 return exists(value) && VIDEO_IMPORT_STATES[value] !== undefined
fbad87b0
C
22}
23
edaf5b86
C
24const videoTorrentImportRegex = Object.keys(MIMETYPES.TORRENT.MIMETYPE_EXT)
25 .concat([ 'application/octet-stream' ]) // MacOS sends application/octet-stream
26 .map(m => `(${m})`)
27 .join('|')
990b6a0b
C
28function isVideoImportTorrentFile (files: { [ fieldname: string ]: Express.Multer.File[] } | Express.Multer.File[]) {
29 return isFileValid(files, videoTorrentImportRegex, 'torrentfile', CONSTRAINTS_FIELDS.VIDEO_IMPORTS.TORRENT_FILE.FILE_SIZE.max, true)
30}
31
fbad87b0
C
32// ---------------------------------------------------------------------------
33
34export {
35 isVideoImportStateValid,
299474e8 36 isVideoImportTargetUrlValid,
990b6a0b 37 isVideoImportTorrentFile
fbad87b0 38}