X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Focpp%2F2.0%2FOCPP20RequestService.ts;h=03921891105e745103479904b0b87dbd1bd03c7a;hb=1feac591544c625c56086abe1f14dbdc706280fb;hp=a9a7302847cc0932cdf6cba057858959c9f0e9e1;hpb=66a7748ddeda8c94d7562a1ce58d440319654a4c;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 a9a73028..03921891 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-2023. All Rights Reserved. +// 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`) + // if (new.target.name === moduleName) { + // throw new TypeError(`Cannot construct ${new.target.name} instances directly`) // } - super(OCPPVersion.VERSION_20, ocppResponseService) - this.jsonSchemas = new Map>([ + super(OCPPVersion.VERSION_201, ocppResponseService) + 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(