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