+
+async function commonVideoChecksPass (parameters: {
+ req: express.Request
+ res: express.Response
+ user: MUserAccountId
+ videoFileSize: number
+ files: express.UploadFilesForCheck
+}): Promise<boolean> {
+ const { req, res, user, videoFileSize, files } = parameters
+
+ if (areErrorsInScheduleUpdate(req, res)) return false
+
+ if (!await doesVideoChannelOfAccountExist(req.body.channelId, user, res)) return false
+
+ if (!isVideoFileMimeTypeValid(files)) {
+ res.status(HttpStatusCode.UNSUPPORTED_MEDIA_TYPE_415)
+ .json({
+ error: 'This file is not supported. Please, make sure it is of the following type: ' +
+ CONSTRAINTS_FIELDS.VIDEOS.EXTNAME.join(', ')
+ })
+
+ return false
+ }
+
+ if (!isVideoFileSizeValid(videoFileSize.toString())) {
+ res.status(HttpStatusCode.PAYLOAD_TOO_LARGE_413)
+ .json({ error: 'This file is too large. It exceeds the maximum file size authorized.' })
+
+ return false
+ }
+
+ if (await isAbleToUploadVideo(user.id, videoFileSize) === false) {
+ res.status(HttpStatusCode.PAYLOAD_TOO_LARGE_413)
+ .json({ error: 'The user video quota is exceeded with this video.' })
+
+ return false
+ }
+
+ return true
+}
+
+export async function isVideoAccepted (
+ req: express.Request,
+ res: express.Response,
+ videoFile: express.VideoUploadFile
+) {
+ // Check we accept this video
+ const acceptParameters = {
+ videoBody: req.body,
+ videoFile,
+ user: res.locals.oauth.token.User
+ }
+ const acceptedResult = await Hooks.wrapFun(
+ isLocalVideoAccepted,
+ acceptParameters,
+ 'filter:api.video.upload.accept.result'
+ )
+
+ if (!acceptedResult || acceptedResult.accepted !== true) {
+ logger.info('Refused local video.', { acceptedResult, acceptParameters })
+ res.status(HttpStatusCode.FORBIDDEN_403)
+ .json({ error: acceptedResult.errorMessage || 'Refused local video' })
+
+ return false
+ }
+
+ return true
+}
+
+async function addDurationToVideo (videoFile: { path: string, duration?: number }) {
+ const duration: number = await getDurationFromVideoFile(videoFile.path)
+
+ if (isNaN(duration)) throw new Error(`Couldn't get video duration`)
+
+ videoFile.duration = duration
+}