From 5ebe2702d05cbaa71ca43ca7e2974d74cf1b9aca Mon Sep 17 00:00:00 2001 From: SrGooglo Date: Tue, 30 May 2023 00:56:32 +0000 Subject: [PATCH] implement `Errors` classes --- .../music_server/src/classes/Errors/index.js | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 packages/music_server/src/classes/Errors/index.js diff --git a/packages/music_server/src/classes/Errors/index.js b/packages/music_server/src/classes/Errors/index.js new file mode 100644 index 00000000..bc95a60e --- /dev/null +++ b/packages/music_server/src/classes/Errors/index.js @@ -0,0 +1,84 @@ +export class AuthorizationError extends Error { + constructor(req, res, message = "This endpoint requires authorization") { + super(message) + this.name = "AuthorizationError" + + if (req && res) { + return res.status(this.constructor.statusCode).json({ + error: message, + }) + } + } + + static get statusCode() { + return 401 + } +} + +export class NotFoundError extends Error { + constructor(req, res, message = "Not found") { + super(message) + this.name = "NotFoundError" + + if (req && res) { + return res.status(this.constructor.statusCode).json({ + error: message, + }) + } + } + + static get statusCode() { + return 404 + } +} + +export class PermissionError extends Error { + constructor(req, res, message = "You don't have permission to do this") { + super(message) + this.name = "PermissionError" + + if (req && res) { + return res.status(this.constructor.statusCode).json({ + error: message, + }) + } + } + + static get statusCode() { + return 403 + } +} + +export class BadRequestError extends Error { + constructor(req, res, message = "Bad request") { + super(message) + this.name = "BadRequestError" + + if (req && res) { + return res.status(this.constructor.statusCode).json({ + error: message, + }) + } + } + + static get statusCode() { + return 400 + } +} + +export class InternalServerError extends Error { + constructor(req, res, message = "Internal server error") { + super(message) + this.name = "InternalServerError" + + if (req && res) { + return res.status(this.constructor.statusCode).json({ + error: message, + }) + } + } + + static get statusCode() { + return 500 + } +} \ No newline at end of file