Empty string handling fixes
[e-mobility-charging-stations-simulator.git] / src / charging-station / ui-server / UIServerFactory.ts
CommitLineData
8114d10e
JB
1import chalk from 'chalk';
2
6c1761d4 3import type { AbstractUIServer } from './AbstractUIServer';
1f7fa4de 4import UIHttpServer from './UIHttpServer';
ed3d2808 5import { UIServerUtils } from './UIServerUtils';
fe94fce0 6import UIWebSocketServer from './UIWebSocketServer';
78202038
JB
7import type { UIServerConfiguration } from '../../types/ConfigurationData';
8import { ApplicationProtocol } from '../../types/UIProtocol';
9import Configuration from '../../utils/Configuration';
fe94fce0
JB
10
11export default class UIServerFactory {
12 private constructor() {
13 // This is intentional
14 }
15
16 public static getUIServerImplementation(
eb3abc4f 17 uiServerConfiguration?: UIServerConfiguration
fe94fce0 18 ): AbstractUIServer | null {
ed3d2808 19 if (UIServerUtils.isLoopback(uiServerConfiguration.options?.host) === false) {
d5bd1c00 20 console.warn(
9c5d9fa4 21 chalk.yellow(
d5bd1c00
JB
22 'Loopback address not detected in UI server configuration. This is not recommended.'
23 )
24 );
25 }
976d11ec 26 switch (uiServerConfiguration?.type ?? Configuration.getUIServer().type) {
fe94fce0 27 case ApplicationProtocol.WS:
eb3abc4f 28 return new UIWebSocketServer(uiServerConfiguration ?? Configuration.getUIServer());
1f7fa4de 29 case ApplicationProtocol.HTTP:
eb3abc4f 30 return new UIHttpServer(uiServerConfiguration ?? Configuration.getUIServer());
fe94fce0
JB
31 default:
32 return null;
33 }
34 }
35}