X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Focpp%2FOCPPServiceUtils.ts;h=6d21182891224ec436dba3946993b776d3cc6eb4;hb=8b7072dca602c80ec6ef9a3463b6d53b43aa8fa5;hp=15edd6dfef63a731370d62dfa76e466abeeeabed;hpb=72092cfcf8a31c06e4592b25e060e2d74d2ed99c;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ocpp/OCPPServiceUtils.ts b/src/charging-station/ocpp/OCPPServiceUtils.ts index 15edd6df..6d211828 100644 --- a/src/charging-station/ocpp/OCPPServiceUtils.ts +++ b/src/charging-station/ocpp/OCPPServiceUtils.ts @@ -1,6 +1,9 @@ -import type { DefinedError, ErrorObject } from 'ajv'; +import fs from 'node:fs'; + +import type { DefinedError, ErrorObject, JSONSchemaType } from 'ajv'; import BaseError from '../../exception/BaseError'; +import { FileType } from '../../types/FileType'; import type { JsonObject, JsonType } from '../../types/JsonType'; import type { SampledValueTemplate } from '../../types/MeasurandPerPhaseSampledValueTemplates'; import type { OCPP16StatusNotificationRequest } from '../../types/ocpp/1.6/Requests'; @@ -19,6 +22,7 @@ import { type StatusNotificationRequest, } from '../../types/ocpp/Requests'; import Constants from '../../utils/Constants'; +import FileUtils from '../../utils/FileUtils'; import logger from '../../utils/Logger'; import Utils from '../../utils/Utils'; import type ChargingStation from '../ChargingStation'; @@ -164,6 +168,23 @@ export class OCPPServiceUtils { } } + protected static parseJsonSchemaFile( + filePath: string, + ocppVersion: OCPPVersion + ): JSONSchemaType { + try { + return JSON.parse(fs.readFileSync(filePath, 'utf8')) as JSONSchemaType; + } catch (error) { + FileUtils.handleFileException( + filePath, + FileType.JsonSchema, + error as NodeJS.ErrnoException, + OCPPServiceUtils.logPrefix(ocppVersion), + { throwError: false } + ); + } + } + protected static getSampledValueTemplate( chargingStation: ChargingStation, connectorId: number, @@ -261,4 +282,8 @@ export class OCPPServiceUtils { ? Math.min(numberValue * options.unitMultiplier, limit) : numberValue * options.unitMultiplier; } + + private static logPrefix = (ocppVersion: OCPPVersion): string => { + return Utils.logPrefix(` OCPP ${ocppVersion} |`); + }; }