Merge branch 'main' of github.com:SAP/e-mobility-charging-stations-simulator
[e-mobility-charging-stations-simulator.git] / src / charging-station / ui-server / UIServerFactory.ts
1 import chalk from 'chalk';
2
3 import { UIServerUtils } from './UIServerUtils';
4 import { ApplicationProtocol, type UIServerConfiguration } from '../../types';
5 import { Configuration } from '../../utils/Configuration';
6 import { type AbstractUIServer, UIHttpServer, UIWebSocketServer } from '../internal';
7
8 export class UIServerFactory {
9 private constructor() {
10 // This is intentional
11 }
12
13 public static getUIServerImplementation(
14 uiServerConfiguration?: UIServerConfiguration
15 ): AbstractUIServer | null {
16 if (UIServerUtils.isLoopback(uiServerConfiguration.options?.host) === false) {
17 console.warn(
18 chalk.yellow(
19 'Loopback address not detected in UI server configuration. This is not recommended.'
20 )
21 );
22 }
23 switch (uiServerConfiguration?.type ?? Configuration.getUIServer().type) {
24 case ApplicationProtocol.WS:
25 return new UIWebSocketServer(uiServerConfiguration ?? Configuration.getUIServer());
26 case ApplicationProtocol.HTTP:
27 return new UIHttpServer(uiServerConfiguration ?? Configuration.getUIServer());
28 default:
29 return null;
30 }
31 }
32 }