/*Canopy - The next generation of stoner streaming software Copyright (C) 2024-2025 Rainbownapkin and the TTN Community This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .*/ //Config const config = require('../../config.json'); //At some point this will be a bit more advanced, right now it's just a placeholder :P module.exports.errorHandler = function(res, msg, type = "Generic", status = 400){ //Some controllers do things after sending headers, for those, we should remain silent if(!res.headersSent){ res.status(status); return res.send({errors: [{type, msg, date: new Date()}]}); } } module.exports.localExceptionHandler = function(err){ //If we're being verbose if(config.verbose){ //Log the error console.log(err) } } module.exports.exceptionHandler = function(res, err){ //Locally handle the exception module.exports.localExceptionHandler(err); //if not yell at the browser for fucking up, and tell it what it did wrong. module.exports.errorHandler(res, err.message, "Caught Exception"); } module.exports.socketErrorHandler = function(socket, msg, type = "Generic"){ return socket.emit("error", {errors: [{type, msg, date: new Date()}]}); } module.exports.socketExceptionHandler = function(socket, err){ //Locally handle the exception module.exports.localExceptionHandler(err); //if not yell at the browser for fucking up, and tell it what it did wrong. return module.exports.socketErrorHandler(socket, err.msg, "Caught Exception"); } module.exports.socketCriticalExceptionHandler = function(socket, err){ //if not yell at the browser for fucking up, and tell it what it did wrong. socket.emit("kick", {type: "Disconnected", reason: `Server Error: ${err.message}`}); return socket.disconnect(); } module.exports.consoleWarn = function(string){ console.warn('\x1b[31m\x1b[4m%s\x1b[0m',string); } //Basic error-handling middleware to ensure we're not dumping stack traces module.exports.errorMiddleware = function(err, req, res, next){ //Set generic error var reason = "Server Error"; //If it's un-authorized if(err.status == 403){ reason = "Unauthorized" } module.exports.errorHandler(res, err.message, reason, err.status); }