/*Canopy - The next generation of stoner streaming software
Copyright (C) 2024  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 <https://www.gnu.org/licenses/>.*/

//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){
        res.status(status);
        return res.send({errors: [{type, msg, date: new Date()}]});
}

module.exports.exceptionHandler = function(res, 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.socketExceptionHandler = function(socket, err){
        //if not yell at the browser for fucking up, and tell it what it did wrong.
        return socket.emit("error", {errors: [{type: "Caught Exception", msg: err.message, date: new Date()}]});
}

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();
}