import OCPPError from '../../../exception/OCPPError';
import type { JsonObject, JsonType } from '../../../types/JsonType';
import {
- BootReasonEnumType,
- OCPP20BootNotificationRequest,
+ type OCPP20BootNotificationRequest,
OCPP20RequestCommand,
} from '../../../types/ocpp/2.0/Requests';
import { ErrorType } from '../../../types/ocpp/ErrorType';
],
]);
this.buildRequestPayload.bind(this);
- this.validatePayload.bind(this);
}
public async requestHandler<RequestType extends JsonType, ResponseType extends JsonType>(
commandName,
commandParams
);
- this.validatePayload(chargingStation, commandName, requestPayload);
return (await this.sendMessage(
chargingStation,
Utils.generateUUID(),
);
}
+ protected getRequestPayloadValidationSchema(
+ chargingStation: ChargingStation,
+ commandName: OCPP20RequestCommand
+ ): JSONSchemaType<JsonObject> | false {
+ if (this.jsonSchemas.has(commandName) === true) {
+ return this.jsonSchemas.get(commandName);
+ }
+ logger.warn(
+ `${chargingStation.logPrefix()} ${moduleName}.getPayloadValidationSchema: No JSON schema found for command ${commandName} PDU validation`
+ );
+ return false;
+ }
+
private buildRequestPayload<Request extends JsonType>(
chargingStation: ChargingStation,
commandName: OCPP20RequestCommand,
commandParams = commandParams as JsonObject;
switch (commandName) {
case OCPP20RequestCommand.BOOT_NOTIFICATION:
- commandParams.modem = commandParams.modem as JsonObject;
+ commandParams.chargingStation = commandParams.chargingStation as JsonObject;
+ commandParams.chargingStation.modem = commandParams.chargingStation.modem as JsonObject;
return {
reason: commandParams?.reason,
chargingStation: {
- model: commandParams?.model,
- vendorName: commandParams?.vendorName,
- ...(!Utils.isUndefined(commandParams?.firmwareVersion) && {
- firmwareVersion: commandParams.firmwareVersion,
+ model: commandParams?.chargingStation?.model,
+ vendorName: commandParams?.chargingStation?.vendorName,
+ ...(!Utils.isUndefined(commandParams?.chargingStation?.firmwareVersion) && {
+ firmwareVersion: commandParams.chargingStation?.firmwareVersion,
+ }),
+ ...(!Utils.isUndefined(commandParams?.chargingStation?.serialNumber) && {
+ serialNumber: commandParams.chargingStation?.serialNumber,
}),
- ...(!Utils.isUndefined(commandParams?.serialNumber) && {
- serialNumber: commandParams.serialNumber,
+ ...(!Utils.isUndefined(commandParams?.chargingStation?.modem) && {
+ modem: {
+ ...(!Utils.isUndefined(commandParams?.chargingStation?.modem?.iccid) && {
+ iccid: commandParams.chargingStation.modem.iccid,
+ }),
+ ...(!Utils.isUndefined(commandParams?.chargingStation?.modem?.imsi) && {
+ imsi: commandParams.chargingStation.modem.imsi,
+ }),
+ },
}),
- modem: {
- ...(!Utils.isUndefined(commandParams?.modem?.iccid) && {
- iccid: commandParams.modem.iccid,
- }),
- ...(!Utils.isUndefined(commandParams?.modem?.imsi) && {
- imsi: commandParams.modem.imsi,
- }),
- },
},
} as unknown as Request;
default:
);
}
}
-
- private validatePayload<Request extends JsonType>(
- chargingStation: ChargingStation,
- commandName: OCPP20RequestCommand,
- requestPayload: Request
- ): boolean {
- if (this.jsonSchemas.has(commandName)) {
- return this.validateRequestPayload(
- chargingStation,
- commandName,
- this.jsonSchemas.get(commandName),
- requestPayload
- );
- }
- logger.warn(
- `${chargingStation.logPrefix()} ${moduleName}.validatePayload: No JSON schema found for command ${commandName} PDU validation`
- );
- return false;
- }
}