fix: ensure reservation expiration internal is > 0
[e-mobility-charging-stations-simulator.git] / src / charging-station / ui-server / UIServerFactory.ts
index 392d1ee010f6ab1447cea880fdd311f8d19c21f7..2a6b521e42446cf0713b3a138db2051bf5eb53ba 100644 (file)
@@ -1,34 +1,46 @@
 import chalk from 'chalk';
 
-import type { UIServerConfiguration } from '../../types/ConfigurationData';
-import { ApplicationProtocol } from '../../types/UIProtocol';
-import Configuration from '../../utils/Configuration';
 import type { AbstractUIServer } from './AbstractUIServer';
-import { UIServiceUtils } from './ui-services/UIServiceUtils';
-import UIHttpServer from './UIHttpServer';
-import UIWebSocketServer from './UIWebSocketServer';
+import { UIHttpServer } from './UIHttpServer';
+import { UIServerUtils } from './UIServerUtils';
+import { UIWebSocketServer } from './UIWebSocketServer';
+import { ApplicationProtocol, ConfigurationSection, type UIServerConfiguration } from '../../types';
+import { Configuration } from '../../utils';
 
-export default class UIServerFactory {
+export class UIServerFactory {
   private constructor() {
     // This is intentional
   }
 
   public static getUIServerImplementation(
-    applicationProtocol: ApplicationProtocol,
-    uiServerConfiguration?: UIServerConfiguration
+    uiServerConfiguration?: UIServerConfiguration,
   ): AbstractUIServer | null {
-    if (UIServiceUtils.isLoopback(uiServerConfiguration.options?.host) === false) {
+    if (UIServerUtils.isLoopback(uiServerConfiguration!.options!.host!) === false) {
       console.warn(
-        chalk.magenta(
-          'Loopback address not detected in UI server configuration. This is not recommended.'
-        )
+        chalk.yellow(
+          'Loopback address not detected in UI server configuration. This is not recommended.',
+        ),
       );
     }
-    switch (applicationProtocol) {
+    switch (
+      uiServerConfiguration?.type ??
+      Configuration.getConfigurationSection<UIServerConfiguration>(ConfigurationSection.uiServer)
+        .type
+    ) {
       case ApplicationProtocol.WS:
-        return new UIWebSocketServer(uiServerConfiguration ?? Configuration.getUIServer());
+        return new UIWebSocketServer(
+          uiServerConfiguration ??
+            Configuration.getConfigurationSection<UIServerConfiguration>(
+              ConfigurationSection.uiServer,
+            ),
+        );
       case ApplicationProtocol.HTTP:
-        return new UIHttpServer(uiServerConfiguration ?? Configuration.getUIServer());
+        return new UIHttpServer(
+          uiServerConfiguration ??
+            Configuration.getConfigurationSection<UIServerConfiguration>(
+              ConfigurationSection.uiServer,
+            ),
+        );
       default:
         return null;
     }