+ public buildProtocolResponse (id: string, responsePayload: ResponsePayload): ProtocolResponse {
+ return [id, responsePayload]
+ }
+
+ public stop (): void {
+ this.stopHttpServer()
+ this.chargingStations.clear()
+ this.chargingStationTemplates.clear()
+ }
+
+ public async sendInternalRequest (request: ProtocolRequest): Promise<ProtocolResponse> {
+ const protocolVersion = ProtocolVersion['0.0.1']
+ this.registerProtocolVersionUIService(protocolVersion)
+ return await (this.uiServices
+ .get(protocolVersion)
+ ?.requestHandler(request) as Promise<ProtocolResponse>)
+ }
+
+ public hasResponseHandler (id: string): boolean {
+ return this.responseHandlers.has(id)
+ }
+
+ protected startHttpServer (): void {
+ if (!this.httpServer.listening) {
+ this.httpServer.listen(this.uiServerConfiguration.options)
+ }
+ }
+
+ protected registerProtocolVersionUIService (version: ProtocolVersion): void {
+ if (!this.uiServices.has(version)) {
+ this.uiServices.set(version, UIServiceFactory.getUIServiceImplementation(version, this))
+ }
+ }
+
+ protected authenticate (req: IncomingMessage, next: (err?: Error) => void): void {
+ if (this.isBasicAuthEnabled()) {
+ if (!this.isValidBasicAuth(req)) {
+ next(new BaseError('Unauthorized'))
+ }
+ next()
+ }
+ next()