change validator api
This commit is contained in:
@@ -9,11 +9,54 @@ import getRoomSchema from "./schemas/getRooms-schema.json";
|
||||
import getMessagesSchema from "./schemas/getMessages-schema.json";
|
||||
import getMembersSchema from "./schemas/getMembers-schema.json";
|
||||
import setFlagSchema from "./schemas/setFlag-schema.json";
|
||||
import { Request, Response } from "express";
|
||||
import statusCodes from "../utils/statusCodes";
|
||||
import logger from "../system/Logger";
|
||||
|
||||
export const validateCreateAccount = ajv.compile(createAccountSchema);
|
||||
export const validateGetAccounts = ajv.compile(getAccountSchema);
|
||||
export const validateGetRooms = ajv.compile(getRoomSchema);
|
||||
export const validateGetMessages = ajv.compile(getMessagesSchema);
|
||||
export const validateGetMembers = ajv.compile(getMembersSchema);
|
||||
export const validateAddFlag = ajv.compile(setFlagSchema);
|
||||
export const validateRemoveFlag = ajv.compile(setFlagSchema);
|
||||
export const validateSetFlag = ajv.compile(setFlagSchema);
|
||||
|
||||
class Validator {
|
||||
_getSchema(name: string): any {
|
||||
switch (name) {
|
||||
case "createAccount":
|
||||
return validateCreateAccount;
|
||||
case "getAccounts":
|
||||
return validateGetAccounts;
|
||||
case "getRooms":
|
||||
return validateGetRooms;
|
||||
case "getMessages":
|
||||
return validateGetMessages;
|
||||
case "getMembers":
|
||||
return validateGetMembers;
|
||||
case "addFlag":
|
||||
case "removeFlag":
|
||||
return validateSetFlag;
|
||||
default:
|
||||
logger.err(`Schema ${name} not found`);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
async validate(
|
||||
schemaName: string,
|
||||
args: any,
|
||||
res: Response,
|
||||
callback: (body: any, res: Response) => Promise<void>,
|
||||
): Promise<void> {
|
||||
const validator = this._getSchema(schemaName);
|
||||
const valid = validator(args);
|
||||
if (!valid) {
|
||||
res.status(statusCodes.NOT_ACCEPTABLE).send({ error: validator.errors });
|
||||
} else {
|
||||
await callback(args, res);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const validator = new Validator();
|
||||
export default validator;
|
||||
Reference in New Issue
Block a user