X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Focpp%2F2.0%2FOCPP20RequestService.ts;h=a61fc2aee090d4d7dfa836e3a7c5d90a1f96aeee;hb=2665ed1ef62a9fc9b6eec417f3ec7c33305789cf;hp=769064b99fc727096b8abc61cedc9129c6a698bd;hpb=13a6f27c10768faa05acf33fd8e0637511d49e3e;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ocpp/2.0/OCPP20RequestService.ts b/src/charging-station/ocpp/2.0/OCPP20RequestService.ts index 769064b9..a61fc2ae 100644 --- a/src/charging-station/ocpp/2.0/OCPP20RequestService.ts +++ b/src/charging-station/ocpp/2.0/OCPP20RequestService.ts @@ -1,6 +1,6 @@ // Partial Copyright Jerome Benoit. 2021-2024. All Rights Reserved. -import type { JSONSchemaType } from 'ajv' +import type { ValidateFunction } from 'ajv' import { OCPP20Constants } from './OCPP20Constants.js' import { OCPP20ServiceUtils } from './OCPP20ServiceUtils.js' @@ -24,44 +24,52 @@ import type { OCPPResponseService } from '../OCPPResponseService.js' const moduleName = 'OCPP20RequestService' export class OCPP20RequestService extends OCPPRequestService { - protected jsonSchemas: Map> + protected payloadValidateFunctions: Map> public constructor (ocppResponseService: OCPPResponseService) { // if (new.target.name === moduleName) { // throw new TypeError(`Cannot construct ${new.target.name} instances directly`) // } super(OCPPVersion.VERSION_20, ocppResponseService) - this.jsonSchemas = new Map>([ + this.payloadValidateFunctions = new Map>([ [ OCPP20RequestCommand.BOOT_NOTIFICATION, - OCPP20ServiceUtils.parseJsonSchemaFile( - 'assets/json-schemas/ocpp/2.0/BootNotificationRequest.json', - moduleName, - 'constructor' - ) + this.ajv + .compile( + OCPP20ServiceUtils.parseJsonSchemaFile( + 'assets/json-schemas/ocpp/2.0/BootNotificationRequest.json', + moduleName, + 'constructor' + ) + ) + .bind(this) ], [ OCPP20RequestCommand.HEARTBEAT, - OCPP20ServiceUtils.parseJsonSchemaFile( - 'assets/json-schemas/ocpp/2.0/HeartbeatRequest.json', - moduleName, - 'constructor' - ) + this.ajv + .compile( + OCPP20ServiceUtils.parseJsonSchemaFile( + 'assets/json-schemas/ocpp/2.0/HeartbeatRequest.json', + moduleName, + 'constructor' + ) + ) + .bind(this) ], [ OCPP20RequestCommand.STATUS_NOTIFICATION, - OCPP20ServiceUtils.parseJsonSchemaFile( - 'assets/json-schemas/ocpp/2.0/StatusNotificationRequest.json', - moduleName, - 'constructor' - ) + this.ajv + .compile( + OCPP20ServiceUtils.parseJsonSchemaFile( + 'assets/json-schemas/ocpp/2.0/StatusNotificationRequest.json', + moduleName, + 'constructor' + ) + ) + .bind(this) ] ]) - this.buildRequestPayload = this.buildRequestPayload.bind(this) as ( - chargingStation: ChargingStation, - commandName: OCPP20RequestCommand, - commandParams?: JsonType - ) => Request + this.buildRequestPayload = this.buildRequestPayload.bind(this) } public async requestHandler(