let Errors = { unknown: ["Something went wrong.", 500], unauthorized: ["You don't have permission to do that.", 401], notAuthenticated: ["You have to login to do that", 401], invalidUserOrPassword: ["Invalid username or password.", 401], invalidTotp: ["Invalid 2FA code.", 401], invalidCredentials: ["Invalid username or password.", 401], rateLimit: [ "You are being rate-limited. Please try again in a few minutes.", 429 ], communicationsUserNotFound: ["This user does not exist.", 400], communicationsUserNotOptedIn: [ "This user does not have chatting enabled.", 400 ], friendAlreadyFriends: ["You are already friends with this user.", 400], friendNotFound: ["The friend instance couldn't be found.", 400], chatNotFoundOrNotAdmin: [ "The chat instance couldn't be found, or you are not an administrator of it.", 400 ], experimentsOptIn: ["You are not opted into this experiment.", 401], attachmentNotFound: [ "The user content you are trying to access does not exist, or has been deleted.", 400 ], invalidFileType: [ "The file you are trying to upload is not a valid file type.", 400 ], fileTooLarge: [ "The file you are trying to upload is too large. Maximum 50MB.", 400 ], invalidPassword: [ "Your password must be at least 8 characters in length.", 400 ], registrationsDisabled: [ "Registrations are currently disabled on this instance. Please try again later.", 400 ], banned: ["You are banned from this instance.", 400], leavingDirectChat: ["You cannot leave a direct message.", 400], emailVerificationRequired: [ "You must verify your email before you can do this action.", 401 ], mailFail: ["There was an error sending the verification email.", 400], invalidToken: ["The token you provided is invalid.", 400], cannotFriendYourself: ["You cannot friend yourself.", 400] } function processErrors(errorName) { let arr = Errors[errorName] let temp = {} temp.name = errorName temp.message = arr[0] temp.status = arr[1] return { name: errorName, message: arr[0], status: arr[1] } } let ProcessedErrors = {} for (let errorName in Errors) { ProcessedErrors[errorName] = processErrors(errorName) } ProcessedErrors.VALIDATION_ERROR = "VALIDATION_ERROR" ProcessedErrors.invalidParameter = function (param, message) { let punctuatedMessage = "" if (message) { punctuatedMessage = ": " + message } return { name: "invalidParameter", message: `${param} is invalid${punctuatedMessage}`, status: 400, parameter: param } } ProcessedErrors.customMessage = function (param) { return { name: "customMessage", message: `${param}`, status: 400, parameter: param } } ProcessedErrors.sequelizeValidation = (sequelize, obj) => { return new sequelize.ValidationError(obj.error, [ new sequelize.ValidationErrorItem( obj.error, "Validation error", obj.path, obj.value ) ]) } module.exports = ProcessedErrors