]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/controllers/api/videos/index.ts
Improve real world script
[github/Chocobozzz/PeerTube.git] / server / controllers / api / videos / index.ts
index f639df098ae4768168372a6268af8e86cc090f4f..7a9cd9d37486b03a01512b2a19376181c1f22a49 100644 (file)
@@ -61,8 +61,7 @@ const storage = multer.diskStorage({
     else if (file.mimetype === 'video/ogg') extension = 'ogv'
     generateRandomString(16)
       .then(randomString => {
-        const filename = randomString
-        cb(null, filename + '.' + extension)
+        cb(null, randomString + '.' + extension)
       })
       .catch(err => {
         logger.error('Cannot generate random string for file name.', err)
@@ -93,7 +92,7 @@ videosRouter.put('/:id',
   videosUpdateValidator,
   updateVideoRetryWrapper
 )
-videosRouter.post('/',
+videosRouter.post('/upload',
   authenticate,
   reqFiles,
   videosAddValidator,
@@ -128,15 +127,15 @@ export {
 
 // ---------------------------------------------------------------------------
 
-function listVideoCategories (req: express.Request, res: express.Response, next: express.NextFunction) {
+function listVideoCategories (req: express.Request, res: express.Response) {
   res.json(VIDEO_CATEGORIES)
 }
 
-function listVideoLicences (req: express.Request, res: express.Response, next: express.NextFunction) {
+function listVideoLicences (req: express.Request, res: express.Response) {
   res.json(VIDEO_LICENCES)
 }
 
-function listVideoLanguages (req: express.Request, res: express.Response, next: express.NextFunction) {
+function listVideoLanguages (req: express.Request, res: express.Response) {
   res.json(VIDEO_LANGUAGES)
 }
 
@@ -144,7 +143,7 @@ function listVideoLanguages (req: express.Request, res: express.Response, next:
 // We need this because we run the transaction in SERIALIZABLE isolation that can fail
 function addVideoRetryWrapper (req: express.Request, res: express.Response, next: express.NextFunction) {
   const options = {
-    arguments: [ req, res, req.files.videofile[0] ],
+    arguments: [ req, res, req.files['videofile'][0] ],
     errorMessage: 'Cannot insert the video with many retries.'
   }
 
@@ -157,7 +156,8 @@ function addVideoRetryWrapper (req: express.Request, res: express.Response, next
 }
 
 function addVideo (req: express.Request, res: express.Response, videoPhysicalFile: Express.Multer.File) {
-  const videoInfos: VideoCreate = req.body
+  const videoInfo: VideoCreate = req.body
+  let videoUUID = ''
 
   return db.sequelize.transaction(t => {
     const user = res.locals.oauth.token.User
@@ -169,21 +169,21 @@ function addVideo (req: express.Request, res: express.Response, videoPhysicalFil
 
     return db.Author.findOrCreateAuthor(name, podId, userId, t)
       .then(author => {
-        const tags = videoInfos.tags
+        const tags = videoInfo.tags
         if (!tags) return { author, tagInstances: undefined }
 
         return db.Tag.findOrCreateTags(tags, t).then(tagInstances => ({ author, tagInstances }))
       })
       .then(({ author, tagInstances }) => {
         const videoData = {
-          name: videoInfos.name,
+          name: videoInfo.name,
           remote: false,
           extname: extname(videoPhysicalFile.filename),
-          category: videoInfos.category,
-          licence: videoInfos.licence,
-          language: videoInfos.language,
-          nsfw: videoInfos.nsfw,
-          description: videoInfos.description,
+          category: videoInfo.category,
+          licence: videoInfo.licence,
+          language: videoInfo.language,
+          nsfw: videoInfo.nsfw,
+          description: videoInfo.description,
           duration: videoPhysicalFile['duration'], // duration was added by a previous middleware
           authorId: author.id
         }
@@ -240,8 +240,9 @@ function addVideo (req: express.Request, res: express.Response, videoPhysicalFil
 
         return video.save(options)
           .then(videoCreated => {
-            // Do not forget to add Author informations to the created video
+            // Do not forget to add Author information to the created video
             videoCreated.Author = author
+            videoUUID = videoCreated.uuid
 
             return { tagInstances, video: videoCreated, videoFile }
           })
@@ -265,7 +266,7 @@ function addVideo (req: express.Request, res: express.Response, videoPhysicalFil
           })
       })
       .then(video => {
-        // Let transcoding job send the video to friends because the videofile extension might change
+        // Let transcoding job send the video to friends because the video file extension might change
         if (CONFIG.TRANSCODING.ENABLED === true) return undefined
 
         return video.toAddRemoteJSON()
@@ -275,7 +276,7 @@ function addVideo (req: express.Request, res: express.Response, videoPhysicalFil
           })
       })
   })
-  .then(() => logger.info('Video with name %s created.', videoInfos.name))
+  .then(() => logger.info('Video with name %s and uuid %s created.', videoInfo.name, videoUUID))
   .catch((err: Error) => {
     logger.debug('Cannot insert the video.', err)
     throw err
@@ -299,14 +300,14 @@ function updateVideoRetryWrapper (req: express.Request, res: express.Response, n
 function updateVideo (req: express.Request, res: express.Response) {
   const videoInstance = res.locals.video
   const videoFieldsSave = videoInstance.toJSON()
-  const videoInfosToUpdate: VideoUpdate = req.body
+  const videoInfoToUpdate: VideoUpdate = req.body
 
   return db.sequelize.transaction(t => {
     let tagsPromise: Promise<TagInstance[]>
-    if (!videoInfosToUpdate.tags) {
+    if (!videoInfoToUpdate.tags) {
       tagsPromise = Promise.resolve(null)
     } else {
-      tagsPromise = db.Tag.findOrCreateTags(videoInfosToUpdate.tags, t)
+      tagsPromise = db.Tag.findOrCreateTags(videoInfoToUpdate.tags, t)
     }
 
     return tagsPromise
@@ -315,12 +316,12 @@ function updateVideo (req: express.Request, res: express.Response) {
           transaction: t
         }
 
-        if (videoInfosToUpdate.name !== undefined) videoInstance.set('name', videoInfosToUpdate.name)
-        if (videoInfosToUpdate.category !== undefined) videoInstance.set('category', videoInfosToUpdate.category)
-        if (videoInfosToUpdate.licence !== undefined) videoInstance.set('licence', videoInfosToUpdate.licence)
-        if (videoInfosToUpdate.language !== undefined) videoInstance.set('language', videoInfosToUpdate.language)
-        if (videoInfosToUpdate.nsfw !== undefined) videoInstance.set('nsfw', videoInfosToUpdate.nsfw)
-        if (videoInfosToUpdate.description !== undefined) videoInstance.set('description', videoInfosToUpdate.description)
+        if (videoInfoToUpdate.name !== undefined) videoInstance.set('name', videoInfoToUpdate.name)
+        if (videoInfoToUpdate.category !== undefined) videoInstance.set('category', videoInfoToUpdate.category)
+        if (videoInfoToUpdate.licence !== undefined) videoInstance.set('licence', videoInfoToUpdate.licence)
+        if (videoInfoToUpdate.language !== undefined) videoInstance.set('language', videoInfoToUpdate.language)
+        if (videoInfoToUpdate.nsfw !== undefined) videoInstance.set('nsfw', videoInfoToUpdate.nsfw)
+        if (videoInfoToUpdate.description !== undefined) videoInstance.set('description', videoInfoToUpdate.description)
 
         return videoInstance.save(options).then(() => tagInstances)
       })
@@ -343,7 +344,7 @@ function updateVideo (req: express.Request, res: express.Response) {
       })
   })
   .then(() => {
-    logger.info('Video with name %s updated.', videoInstance.name)
+    logger.info('Video with name %s and uuid %s updated.', videoInstance.name, videoInstance.uuid)
   })
   .catch(err => {
     logger.debug('Cannot update the video.', err)
@@ -360,7 +361,7 @@ function updateVideo (req: express.Request, res: express.Response) {
   })
 }
 
-function getVideo (req: express.Request, res: express.Response, next: express.NextFunction) {
+function getVideo (req: express.Request, res: express.Response) {
   const videoInstance = res.locals.video
 
   if (videoInstance.isOwned()) {
@@ -399,7 +400,10 @@ function removeVideo (req: express.Request, res: express.Response, next: express
   const videoInstance = res.locals.video
 
   videoInstance.destroy()
-    .then(() => res.type('json').status(204).end())
+    .then(() => {
+      logger.info('Video with name %s and uuid %s deleted.', videoInstance.name, videoInstance.uuid)
+      res.type('json').status(204).end()
+    })
     .catch(err => {
       logger.error('Errors when removed the video.', err)
       return next(err)