+const getMyVideoImportsValidator = [
+ query('videoChannelSyncId')
+ .optional()
+ .custom(isIdValid),
+
+ (req: express.Request, res: express.Response, next: express.NextFunction) => {
+ if (areValidationErrors(req, res)) return
+
+ return next()
+ }
+]
+
+const videoImportDeleteValidator = [
+ param('id')
+ .custom(isIdValid),
+
+ async (req: express.Request, res: express.Response, next: express.NextFunction) => {
+ if (areValidationErrors(req, res)) return
+
+ if (!await doesVideoImportExist(parseInt(req.params.id), res)) return
+ if (!checkUserCanManageImport(res.locals.oauth.token.user, res.locals.videoImport, res)) return
+
+ if (res.locals.videoImport.state === VideoImportState.PENDING) {
+ return res.fail({
+ status: HttpStatusCode.CONFLICT_409,
+ message: 'Cannot delete a pending video import. Cancel it or wait for the end of the import first.'
+ })
+ }
+
+ return next()
+ }
+]
+
+const videoImportCancelValidator = [
+ param('id')
+ .custom(isIdValid),
+
+ async (req: express.Request, res: express.Response, next: express.NextFunction) => {
+ if (areValidationErrors(req, res)) return
+
+ if (!await doesVideoImportExist(forceNumber(req.params.id), res)) return
+ if (!checkUserCanManageImport(res.locals.oauth.token.user, res.locals.videoImport, res)) return
+
+ if (res.locals.videoImport.state !== VideoImportState.PENDING) {
+ return res.fail({
+ status: HttpStatusCode.CONFLICT_409,
+ message: 'Cannot cancel a non pending video import.'
+ })
+ }
+
+ return next()
+ }
+]
+