From b742229e598b247725c80e91482c4d766f1bbb3e Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 6 Jan 2021 10:49:48 -0500 Subject: [PATCH] fix: #9169, re-adding v2-style behaviour so as to not break the API... yet --- src/controllers/uploads.js | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/controllers/uploads.js b/src/controllers/uploads.js index bbaeb5ab31..ab5fd7dc1a 100644 --- a/src/controllers/uploads.js +++ b/src/controllers/uploads.js @@ -16,11 +16,19 @@ const helpers = require('./helpers'); const uploadsController = module.exports; uploadsController.upload = async function (req, res, filesIterator) { - let files = req.files.files; + let files; + try { + files = req.files.files; + } catch (e) { + return helpers.formatApiResponse(400, res); + } + + // TODO: Remove this (and the usages of isV2 below) in v1.17.0 + const isV2 = req.originalUrl === `${nconf.get('relative_path')}/api/v2/util/upload`; // These checks added because of odd behaviour by request: https://github.com/request/request/issues/2445 if (!Array.isArray(files)) { - return helpers.formatApiResponse(500, res, new Error('[[error:invalid-file]]')); + return isV2 ? res.status(500).json('invalid files') : helpers.formatApiResponse(500, res, new Error('[[error:invalid-file]]')); } if (Array.isArray(files[0])) { files = files[0]; @@ -32,10 +40,20 @@ uploadsController.upload = async function (req, res, filesIterator) { /* eslint-disable no-await-in-loop */ images.push(await filesIterator(fileObj)); } - helpers.formatApiResponse(200, res, { images }); + + if (isV2) { + res.status(200).json(images); + } else { + helpers.formatApiResponse(200, res, { images }); + } + return images; } catch (err) { - return helpers.formatApiResponse(500, res, err); + if (isV2) { + res.status(500).json({ path: req.path, error: err.message }); + } else { + return helpers.formatApiResponse(500, res, err); + } } finally { deleteTempFiles(files); }