refactor: cleanup log messages
[e-mobility-charging-stations-simulator.git] / src / charging-station / ui-server / UIServerFactory.ts
index a5fb5a5d627c926e9d700c9ec34bbb273acd476d..df542ba6773a31271684c4b2ea1f6b51b54f7cb0 100644 (file)
@@ -1,34 +1,52 @@
-import chalk from 'chalk';
+import chalk from 'chalk'
 
-import type { AbstractUIServer } from './AbstractUIServer';
-import { UIHttpServer } from './UIHttpServer';
-import { UIServerUtils } from './UIServerUtils';
-import { UIWebSocketServer } from './UIWebSocketServer';
-import { ApplicationProtocol, type UIServerConfiguration } from '../../types';
-import { Configuration } from '../../utils';
+import type { AbstractUIServer } from './AbstractUIServer.js'
+import { UIHttpServer } from './UIHttpServer.js'
+import { UIServerUtils } from './UIServerUtils.js'
+import { UIWebSocketServer } from './UIWebSocketServer.js'
+import {
+  ApplicationProtocol,
+  ApplicationProtocolVersion,
+  type UIServerConfiguration
+} from '../../types/index.js'
 
+// eslint-disable-next-line @typescript-eslint/no-extraneous-class
 export class UIServerFactory {
-  private constructor() {
+  private constructor () {
     // This is intentional
   }
 
-  public static getUIServerImplementation(
-    uiServerConfiguration?: UIServerConfiguration
-  ): AbstractUIServer | null {
-    if (UIServerUtils.isLoopback(uiServerConfiguration.options?.host) === false) {
+  public static getUIServerImplementation (
+    uiServerConfiguration: UIServerConfiguration
+  ): AbstractUIServer | undefined {
+    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+    if (!UIServerUtils.isLoopback(uiServerConfiguration.options!.host!)) {
       console.warn(
         chalk.yellow(
-          'Loopback address not detected in UI server configuration. This is not recommended.'
+          'Loopback address not detected in UI server configuration. This is not recommended'
         )
-      );
+      )
     }
-    switch (uiServerConfiguration?.type ?? Configuration.getUIServer().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.getUIServer());
+        return new UIWebSocketServer(uiServerConfiguration)
       case ApplicationProtocol.HTTP:
-        return new UIHttpServer(uiServerConfiguration ?? Configuration.getUIServer());
-      default:
-        return null;
+        return new UIHttpServer(uiServerConfiguration)
     }
   }
 }