Handle express-validator error on the client side and fix #96 (#98)
authorRonan <flyingrub@protonmail.com>
Mon, 16 Oct 2017 09:43:40 +0000 (11:43 +0200)
committerBigard Florian <florian.bigard@gmail.com>
Mon, 16 Oct 2017 09:43:40 +0000 (11:43 +0200)
* Handle express-validator error on the client side

* More meaningfull error for not supported format

client/src/app/shared/rest/rest-extractor.service.ts
server/middlewares/validators/videos.ts

index aafc9723ecac0028ed2537059982d17a9cd8709e..b560e2fe44edcadfedd8e4cf2099b6819f564d26 100644 (file)
@@ -45,8 +45,19 @@ export class RestExtractor {
       errorMessage = err.error.message
       console.error('An error occurred:', errorMessage)
     } else if (err.status !== undefined) {
-      const body = err.error
-      errorMessage = body ? body.error : 'Unknown error.'
+      // A server-side error occurred.
+      // TODO: remove when angular/angular#19477 (comment) is fixed
+      let body = JSON.parse(err.error)
+      if (body) {
+        if (body.errors) {
+          const errors = body.errors
+          const error = errors[Object.keys(errors)[0]]
+          errorMessage = error.msg // Take the message of the first error
+        } else if (body.error) {
+          errorMessage = body.error
+        }
+      }
+      errorMessage = errorMessage ? errorMessage : 'Unknown error.'
       console.error(`Backend returned code ${err.status}, body was: ${errorMessage}`)
     } else {
       errorMessage = err
index deed075245209f6e2258c0681bddf8a2879e8651..f63348e66276de39707049264490cc0e1d8520ed 100644 (file)
@@ -23,7 +23,10 @@ import {
 } from '../../helpers'
 
 const videosAddValidator = [
-  body('videofile').custom((value, { req }) => isVideoFile(req.files)).withMessage('Should have a valid file'),
+  body('videofile').custom((value, { req }) => isVideoFile(req.files)).withMessage(
+    'This file is not supported. Are you sure it is of the following type : '
+    + CONSTRAINTS_FIELDS.VIDEOS.EXTNAME
+  ),
   body('name').custom(isVideoNameValid).withMessage('Should have a valid name'),
   body('category').custom(isVideoCategoryValid).withMessage('Should have a valid category'),
   body('licence').custom(isVideoLicenceValid).withMessage('Should have a valid licence'),