DeepSource fixes

pull/20/head
tycrek 3 years ago
parent 0919939ac7
commit 7d47c173e9
No known key found for this signature in database
GPG Key ID: 25D74F3943625263

@ -5,5 +5,7 @@
"CODE_BAD_REQUEST": 400,
"CODE_UNAUTHORIZED": 401,
"CODE_NOT_FOUND": 404,
"CODE_PAYLOAD_TOO_LARGE": 413,
"CODE_INTERNAL_SERVER_ERROR": 500,
"KILOBYTES": 1024
}

@ -22,7 +22,7 @@ const { WebhookClient, MessageEmbed } = require('discord.js');
const { doUpload, deleteS3, processUploaded } = require('./storage');
const { path, saveData, log, verify, getTrueHttp, getTrueDomain, generateToken, generateId, formatBytes,
formatTimestamp, arrayEquals, getS3url, getDirectUrl, getSafeExt, getResourceColor, replaceholder } = require('./utils');
const { CODE_NO_CONTENT, CODE_BAD_REQUEST, CODE_UNAUTHORIZED, CODE_NOT_FOUND } = require('./MagicNumbers.json');
const { CODE_NO_CONTENT, CODE_BAD_REQUEST, CODE_UNAUTHORIZED, CODE_NOT_FOUND, CODE_PAYLOAD_TOO_LARGE, CODE_INTERNAL_SERVER_ERROR } = require('./MagicNumbers.json');
//#endregion
//#region Variables, module setup
@ -113,7 +113,7 @@ function startup() {
// Upload file
app.post('/', doUpload, processUploaded, ({ next }) => next());
app.use('/', (err, _req, res, next) => err.code && err.code === 'LIMIT_FILE_SIZE' ? res.status(413).send(`Max upload size: ${maxUploadSize}MB`) : next(err));
app.use('/', (err, _req, res, next) => err.code && err.code === 'LIMIT_FILE_SIZE' ? res.status(CODE_PAYLOAD_TOO_LARGE).send(`Max upload size: ${maxUploadSize}MB`) : next(err));
// Process uploaded file
app.post('/', (req, res) => {
@ -302,9 +302,9 @@ function startup() {
.catch(console.error);
});
app.use((err, _req, res, _next) => {
app.use(([err, , res,]) => {
console.error(err);
res.sendStatus(500);
res.sendStatus(CODE_INTERNAL_SERVER_ERROR);
});
// Host the server

@ -10,6 +10,8 @@ const Hash = require('./hash');
const { getSafeExt, getDatedDirname, sanitize, generateId } = require('./utils');
const { s3enabled, s3endpoint, s3bucket, s3accessKey, s3secretKey, saveAsOriginal, maxUploadSize } = require('./config.json');
const ID_GEN_LENGTH = 32;
const s3 = new aws.S3({
endpoint: new aws.Endpoint(s3endpoint),
credentials: new aws.Credentials({ accessKeyId: s3accessKey, secretAccessKey: s3secretKey })
@ -31,8 +33,8 @@ function processUploaded(req, _, next) {
// Fixes
req.file.mimetype = req.file.detectedMimeType;
req.file.originalname = sanitize(req.file.originalName);
req.file.randomId = generateId('random', 32, null, null);
req.file.deleteId = generateId('random', 32, null, null);
req.file.randomId = generateId('random', ID_GEN_LENGTH, null, null);
req.file.deleteId = generateId('random', ID_GEN_LENGTH, null, null);
// Remove unwanted fields
delete req.file.fieldName;
@ -44,8 +46,9 @@ function processUploaded(req, _, next) {
// Operations
saveFile(req)
.then(() => req.file.path = req.file.path.concat('.temp'))
.then(() => req.file.path = req.file.path.concat('.temp')) // skipcq: JS-0086
.then(() => Promise.all([Thumbnail(req.file), Vibrant(req.file), Hash(req.file)]))
// skipcq: JS-0086
.then(([thumbnail, vibrant, sha1]) => (
req.file.thumbnail = thumbnail, // skipcq: JS-0090
req.file.vibrant = vibrant, // skipcq: JS-0090
@ -53,6 +56,7 @@ function processUploaded(req, _, next) {
))
.then(() =>
// skipcq: JS-0229
new Promise((resolve, reject) => s3enabled
// Upload to Amazon S3
@ -85,10 +89,6 @@ function deleteS3(file) {
.catch(reject));
}
function bucketSize() {
return new Promise((resolve, reject) => (s3enabled ? listAllKeys(resolve, reject) : resolve(0)));
}
function listAllKeys(resolve, reject, token) {
let allKeys = [];
s3.listObjectsV2({ Bucket: s3bucket, ContinuationToken: token }).promise()
@ -96,6 +96,10 @@ function listAllKeys(resolve, reject, token) {
.catch(reject);
}
function bucketSize() {
return new Promise((resolve, reject) => (s3enabled ? listAllKeys(resolve, reject) : resolve(0)));
}
module.exports = {
doUpload: multer({ limits: { fileSize: `${maxUploadSize}MB` } }).single('file'),
processUploaded,

@ -25,4 +25,4 @@ function getVibrant(file, resolve, reject) {
* @param {*} file The file to get a colour from
* @returns The Vibrant colour as a Hex value (or random Hex value for videos)
*/
module.exports = (file) => new Promise((resolve, reject) => file.mimetype.includes('video') ? resolve(randomHexColour()) : getVibrant(file, resolve, reject));
module.exports = (file) => new Promise((resolve, reject) => file.mimetype.includes('video') ? resolve(randomHexColour()) : getVibrant(file, resolve, reject)); // skipcq: JS-0229

Loading…
Cancel
Save