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