refactor: rename src/charging-station/Utils.ts -> src/charging-station/Helpers.ts
[e-mobility-charging-stations-simulator.git] / src / charging-station / ui-server / UIServerFactory.ts
index 2a6b521e42446cf0713b3a138db2051bf5eb53ba..0f75f60feabdd9f331bc56b3b6db3ec13c5c4c58 100644 (file)
@@ -4,8 +4,11 @@ import type { AbstractUIServer } from './AbstractUIServer';
 import { UIHttpServer } from './UIHttpServer';
 import { UIServerUtils } from './UIServerUtils';
 import { UIWebSocketServer } from './UIWebSocketServer';
-import { ApplicationProtocol, ConfigurationSection, type UIServerConfiguration } from '../../types';
-import { Configuration } from '../../utils';
+import {
+  ApplicationProtocol,
+  ApplicationProtocolVersion,
+  type UIServerConfiguration,
+} from '../../types';
 
 export class UIServerFactory {
   private constructor() {
@@ -13,34 +16,35 @@ export class UIServerFactory {
   }
 
   public static getUIServerImplementation(
-    uiServerConfiguration?: UIServerConfiguration,
+    uiServerConfiguration: UIServerConfiguration,
   ): AbstractUIServer | null {
-    if (UIServerUtils.isLoopback(uiServerConfiguration!.options!.host!) === false) {
+    if (UIServerUtils.isLoopback(uiServerConfiguration.options!.host!) === false) {
       console.warn(
         chalk.yellow(
           'Loopback address not detected in UI server configuration. This is not recommended.',
         ),
       );
     }
-    switch (
-      uiServerConfiguration?.type ??
-      Configuration.getConfigurationSection<UIServerConfiguration>(ConfigurationSection.uiServer)
-        .type
+    uiServerConfiguration = {
+      version: ApplicationProtocolVersion.VERSION_11,
+      ...uiServerConfiguration,
+    };
+    if (
+      uiServerConfiguration.type === ApplicationProtocol.WS &&
+      uiServerConfiguration.version !== ApplicationProtocolVersion.VERSION_11
     ) {
+      console.warn(
+        chalk.yellow(
+          `Only version ${ApplicationProtocolVersion.VERSION_11} is supported for WebSocket UI server. Falling back to version ${ApplicationProtocolVersion.VERSION_11}.`,
+        ),
+      );
+      uiServerConfiguration.version = ApplicationProtocolVersion.VERSION_11;
+    }
+    switch (uiServerConfiguration.type) {
       case ApplicationProtocol.WS:
-        return new UIWebSocketServer(
-          uiServerConfiguration ??
-            Configuration.getConfigurationSection<UIServerConfiguration>(
-              ConfigurationSection.uiServer,
-            ),
-        );
+        return new UIWebSocketServer(uiServerConfiguration);
       case ApplicationProtocol.HTTP:
-        return new UIHttpServer(
-          uiServerConfiguration ??
-            Configuration.getConfigurationSection<UIServerConfiguration>(
-              ConfigurationSection.uiServer,
-            ),
-        );
+        return new UIHttpServer(uiServerConfiguration);
       default:
         return null;
     }