]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/helpers/express-utils.ts
Better 413 error handling in cli script
[github/Chocobozzz/PeerTube.git] / server / helpers / express-utils.ts
index 10a860787cf44bf8ded1b7c8d49d63fa61d66caa..780fd6345e850df4735f70d066c3f65616e8d926 100644 (file)
@@ -1,14 +1,13 @@
-import * as express from 'express'
-import * as multer from 'multer'
-import { extname } from 'path'
-import { HttpStatusCode } from '../../shared/core-utils/miscs/http-error-codes'
+import express, { RequestHandler } from 'express'
+import multer, { diskStorage } from 'multer'
+import { HttpStatusCode } from '../../shared/models/http/http-error-codes'
 import { CONFIG } from '../initializers/config'
 import { REMOTE_SCHEME } from '../initializers/constants'
+import { getLowercaseExtension } from '@shared/core-utils'
 import { isArray } from './custom-validators/misc'
 import { logger } from './logger'
 import { deleteFileAndCatch, generateRandomString } from './utils'
 import { getExtFromMimetype } from './video'
-import { ProblemDocument, ProblemDocumentExtension } from 'http-problem-details'
 
 function buildNSFWFilter (res?: express.Response, paramNSFW?: string) {
   if (paramNSFW === 'true') return true
@@ -31,9 +30,7 @@ function buildNSFWFilter (res?: express.Response, paramNSFW?: string) {
   return null
 }
 
-function cleanUpReqFiles (
-  req: { files: { [fieldname: string]: Express.Multer.File[] } | Express.Multer.File[] }
-) {
+function cleanUpReqFiles (req: express.Request) {
   const filesObject = req.files
   if (!filesObject) return
 
@@ -62,7 +59,7 @@ function getHostWithPort (host: string) {
   return host
 }
 
-function badRequest (req: express.Request, res: express.Response) {
+function badRequest (_req: express.Request, res: express.Response) {
   return res.type('json')
             .status(HttpStatusCode.BAD_REQUEST_400)
             .end()
@@ -72,15 +69,15 @@ function createReqFiles (
   fieldNames: string[],
   mimeTypes: { [id: string]: string | string[] },
   destinations: { [fieldName: string]: string }
-) {
-  const storage = multer.diskStorage({
+): RequestHandler {
+  const storage = diskStorage({
     destination: (req, file, cb) => {
       cb(null, destinations[file.fieldname])
     },
 
     filename: async (req, file, cb) => {
       let extension: string
-      const fileExtension = extname(file.originalname)
+      const fileExtension = getLowercaseExtension(file.originalname)
       const extensionFromMimetype = getExtFromMimetype(mimeTypes, file.mimetype)
 
       // Take the file extension if we don't understand the mime type
@@ -126,34 +123,6 @@ function getCountVideos (req: express.Request) {
   return req.query.skipCount !== true
 }
 
-// helpers added in server.ts and used in subsequent controllers used
-const apiResponseHelpers = (req, res: express.Response, next = null) => {
-  res.fail = (options) => {
-    const { data, status = HttpStatusCode.BAD_REQUEST_400, message, title, type, docs = res.docs, instance } = options
-
-    const extension = new ProblemDocumentExtension({
-      ...data,
-      docs,
-      // fields for <= 3.2 compatibility, deprecated
-      error: message,
-      code: type
-    })
-
-    res.status(status)
-    res.setHeader('Content-Type', 'application/problem+json')
-    res.json(new ProblemDocument({
-      status,
-      title,
-      instance,
-      // fields intended to replace 'error' and 'code' respectively
-      detail: message,
-      type: type && 'https://docs.joinpeertube.org/api-rest-reference.html#section/Errors/' + type
-    }, extension))
-  }
-
-  if (next) next()
-}
-
 // ---------------------------------------------------------------------------
 
 export {
@@ -163,6 +132,5 @@ export {
   badRequest,
   createReqFiles,
   cleanUpReqFiles,
-  getCountVideos,
-  apiResponseHelpers
+  getCountVideos
 }