Fix isEmptyString() semantic
[e-mobility-charging-stations-simulator.git] / src / charging-station / ui-server / UIHttpServer.ts
index 37c579dc56a552dc26dbd57ae515378820e9e2d9..f475b8efbac54af6d9fb900920ea32b6298d7fcf 100644 (file)
@@ -2,21 +2,21 @@ import type { IncomingMessage, RequestListener, ServerResponse } from 'http';
 
 import { StatusCodes } from 'http-status-codes';
 
+import { AbstractUIServer } from './AbstractUIServer';
+import { UIServerUtils } from './UIServerUtils';
 import BaseError from '../../exception/BaseError';
 import type { UIServerConfiguration } from '../../types/ConfigurationData';
 import {
-  ProcedureName,
-  Protocol,
-  ProtocolRequest,
-  ProtocolResponse,
-  ProtocolVersion,
-  RequestPayload,
+  type ProcedureName,
+  type Protocol,
+  type ProtocolRequest,
+  type ProtocolResponse,
+  type ProtocolVersion,
+  type RequestPayload,
   ResponseStatus,
 } from '../../types/UIProtocol';
 import logger from '../../utils/Logger';
 import Utils from '../../utils/Utils';
-import { AbstractUIServer } from './AbstractUIServer';
-import { UIServiceUtils } from './ui-services/UIServiceUtils';
 
 const moduleName = 'UIHttpServer';
 
@@ -27,9 +27,7 @@ export default class UIHttpServer extends AbstractUIServer {
 
   public start(): void {
     this.httpServer.on('request', this.requestListener.bind(this) as RequestListener);
-    if (this.httpServer.listening === false) {
-      this.httpServer.listen(this.uiServerConfiguration.options);
-    }
+    this.startHttpServer();
   }
 
   // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -91,8 +89,9 @@ export default class UIHttpServer extends AbstractUIServer {
     const uuid = Utils.generateUUID();
     this.responseHandlers.set(uuid, res);
     try {
-      if (UIServiceUtils.isProtocolAndVersionSupported(protocol, version) === false) {
-        throw new BaseError(`Unsupported UI protocol version: '/${protocol}/${version}'`);
+      const fullProtocol = `${protocol}${version}`;
+      if (UIServerUtils.isProtocolAndVersionSupported(fullProtocol) === false) {
+        throw new BaseError(`Unsupported UI protocol version: '${fullProtocol}'`);
       }
       this.registerProtocolVersionUIService(version);
       req.on('error', (error) => {
@@ -111,7 +110,7 @@ export default class UIHttpServer extends AbstractUIServer {
             const body = JSON.parse(Buffer.concat(bodyBuffer).toString()) as RequestPayload;
             this.uiServices
               .get(version)
-              .requestHandler(this.buildProtocolRequest(uuid, procedureName, body ?? {}))
+              ?.requestHandler(this.buildProtocolRequest(uuid, procedureName, body ?? {}))
               .catch(() => {
                 /* Error caught by AbstractUIService */
               });