import { Context } from "../context/Context"; import { IRule } from "./interface/IRule"; /* * use https://www.npmjs.com/package/validatorjs */ import { ActionParams } from "../action/type/ActionParams"; import { BaseRule } from "./base/BaseRule"; import { ConnectionStatesEnum } from "../context/enum/ConnectionStates"; export class CommonRules extends BaseRule implements IRule { constructor(params: ActionParams){ super(params); } public isClientInit(context: Context, instance: IRule): boolean { let data = { client: context.getResources().getClient(), }; let rules = { client: 'required' }; let messages = { "required.client":'The client must be initiated' }; return instance.evaluate(data, rules, messages); } public isHost(context: Context, instance: IRule): boolean { let data = { role: context.getDeterminants().getRole(), }; let rules = { role: 'required|in:host' }; let messages = { "required.role":'The role is required', "in.role":'The role must be host' }; return instance.evaluate(data, rules, messages); } public isInited(context: Context, instance: IRule): boolean { let data = { init: context.getDeterminants().getInit(), }; let rules = { init: 'boolean|in:true' }; let messages = { "in.init":'Is not initiated' }; return instance.evaluate(data, rules, messages); } public isNotInited(context: Context, instance: IRule): boolean { let data = { init: context.getDeterminants().getInit(), }; let rules = { init: 'boolean|in:false' }; let messages = { "in.init":'Is already initiated' }; return instance.evaluate(data, rules, messages); } public isConnected(context: Context, instance: IRule): boolean { let data = { connection_state: context.getDeterminants().getConnectionState().curState, }; let rules = { connection_state: 'in:'+ConnectionStatesEnum.CONNECTED }; let messages = { "in.connection_state":'Connection state must be '+ConnectionStatesEnum.CONNECTED }; return instance.evaluate(data, rules, messages); } public isDisconnected(context: Context, instance: IRule): boolean { let data = { connection_state: context.getDeterminants().getConnectionState().curState, }; let rules = { connection_state: 'in:'+ConnectionStatesEnum.DISCONNECTED }; let messages = { "in.connection_state":'Connection state must be '+ConnectionStatesEnum.DISCONNECTED }; return instance.evaluate(data, rules, messages); } }