From afb6ca0803fa547989b7686166b6e35fee96673f Mon Sep 17 00:00:00 2001 From: ztimson Date: Wed, 4 Sep 2024 18:48:15 -0400 Subject: [PATCH] Added function to create errors from status codes --- package.json | 2 +- src/errors.ts | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 0dada71..a96d2fa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ztimson/utils", - "version": "0.15.3", + "version": "0.15.4", "description": "Utility library", "author": "Zak Timson", "license": "MIT", diff --git a/src/errors.ts b/src/errors.ts index 9c0dbba..de47eb1 100644 --- a/src/errors.ts +++ b/src/errors.ts @@ -172,3 +172,41 @@ export class GatewayTimeoutError extends CustomError { return (err).constructor.code == this.code; } } + +/** + * Create the correct error object from a status code + * @param {number} code Will be converted to respective error (ex. 404 -> NotFoundError) + * @param {string} message Override default error message + * @return {CustomError} The proper error type + */ +export function errorFromCode(code: number, message?: string) { + if(code >= 200 && code < 300) return null; + switch(code) { + case 400: + return new BadRequestError(message); + case 401: + return new UnauthorizedError(message); + case 402: + return new PaymentRequiredError(message); + case 403: + return new ForbiddenError(message); + case 404: + return new NotFoundError(message); + case 405: + return new MethodNotAllowedError(message); + case 406: + return new NotAcceptableError(message); + case 500: + return new InternalServerError(message); + case 501: + return new NotImplementedError(message); + case 502: + return new BadGatewayError(message); + case 503: + return new ServiceUnavailableError(message); + case 504: + return new GatewayTimeoutError(message); + default: + return new CustomError(message, code); + } +}