X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Focpp%2FOCPPServiceUtils.ts;h=178e4be7fd8057de90284c8362bea157d3c4c562;hb=d211c7d74dc8af67e741f2802594074e8f6fb99f;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..178e4be7 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,25 @@ export class OCPPServiceUtils { } } + protected static parseJsonSchemaFile( + filePath: string, + ocppVersion: OCPPVersion, + moduleName?: string, + methodName?: string + ): 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, moduleName, methodName), + { throwError: false } + ); + } + } + protected static getSampledValueTemplate( chargingStation: ChargingStation, connectorId: number, @@ -261,4 +284,16 @@ export class OCPPServiceUtils { ? Math.min(numberValue * options.unitMultiplier, limit) : numberValue * options.unitMultiplier; } + + private static logPrefix = ( + ocppVersion: OCPPVersion, + moduleName?: string, + methodName?: string + ): string => { + const logMsg = + Utils.isNotEmptyString(moduleName) && Utils.isNotEmptyString(methodName) + ? ` OCPP ${ocppVersion} | ${moduleName}.${methodName}:` + : ` OCPP ${ocppVersion} |`; + return Utils.logPrefix(logMsg); + }; }