]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/helpers/custom-validators/video-imports.ts
Merge branch 'release/beta-10' into develop
[github/Chocobozzz/PeerTube.git] / server / helpers / custom-validators / video-imports.ts
1 import 'express-validator'
2 import 'multer'
3 import * as validator from 'validator'
4 import { CONSTRAINTS_FIELDS, VIDEO_IMPORT_STATES } from '../../initializers'
5 import { exists } from './misc'
6 import * as express from 'express'
7 import { VideoChannelModel } from '../../models/video/video-channel'
8 import { VideoImportModel } from '../../models/video/video-import'
9
10 function isVideoImportTargetUrlValid (url: string) {
11 const isURLOptions = {
12 require_host: true,
13 require_tld: true,
14 require_protocol: true,
15 require_valid_protocol: true,
16 protocols: [ 'http', 'https' ]
17 }
18
19 return exists(url) &&
20 validator.isURL('' + url, isURLOptions) &&
21 validator.isLength('' + url, CONSTRAINTS_FIELDS.VIDEO_IMPORTS.URL)
22 }
23
24 function isVideoImportStateValid (value: any) {
25 return exists(value) && VIDEO_IMPORT_STATES[ value ] !== undefined
26 }
27
28 async function isVideoImportExist (id: number, res: express.Response) {
29 const videoImport = await VideoImportModel.loadAndPopulateVideo(id)
30
31 if (!videoImport) {
32 res.status(404)
33 .json({ error: 'Video import not found' })
34 .end()
35
36 return false
37 }
38
39 res.locals.videoImport = videoImport
40 return true
41 }
42
43 // ---------------------------------------------------------------------------
44
45 export {
46 isVideoImportStateValid,
47 isVideoImportTargetUrlValid,
48 isVideoImportExist
49 }