X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Fui-server%2FUIServerFactory.ts;h=0f75f60feabdd9f331bc56b3b6db3ec13c5c4c58;hb=acfa5fd10b8489f5d85654e654356e65bfd1e0d0;hp=26bbe6dd48519806862bd21fccad1233384853c9;hpb=d5bd1c008c3b2fbe6426ae12e1e12afe97807c57;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ui-server/UIServerFactory.ts b/src/charging-station/ui-server/UIServerFactory.ts index 26bbe6dd..0f75f60f 100644 --- a/src/charging-station/ui-server/UIServerFactory.ts +++ b/src/charging-station/ui-server/UIServerFactory.ts @@ -1,30 +1,50 @@ -import { AbstractUIServer } from './AbstractUIServer'; -import { ApplicationProtocol } from '../../types/UIProtocol'; -import Configuration from '../../utils/Configuration'; -import { ServerOptions } from '../../types/ConfigurationData'; -import { UIServiceUtils } from './ui-services/UIServiceUtils'; -import UIWebSocketServer from './UIWebSocketServer'; import chalk from 'chalk'; -export default class UIServerFactory { +import type { AbstractUIServer } from './AbstractUIServer'; +import { UIHttpServer } from './UIHttpServer'; +import { UIServerUtils } from './UIServerUtils'; +import { UIWebSocketServer } from './UIWebSocketServer'; +import { + ApplicationProtocol, + ApplicationProtocolVersion, + type UIServerConfiguration, +} from '../../types'; + +export class UIServerFactory { private constructor() { // This is intentional } public static getUIServerImplementation( - applicationProtocol: ApplicationProtocol, - options?: ServerOptions + uiServerConfiguration: UIServerConfiguration, ): AbstractUIServer | null { - if (!UIServiceUtils.isLoopback(options?.host)) { + if (UIServerUtils.isLoopback(uiServerConfiguration.options!.host!) === false) { + console.warn( + chalk.yellow( + 'Loopback address not detected in UI server configuration. This is not recommended.', + ), + ); + } + uiServerConfiguration = { + version: ApplicationProtocolVersion.VERSION_11, + ...uiServerConfiguration, + }; + if ( + uiServerConfiguration.type === ApplicationProtocol.WS && + uiServerConfiguration.version !== ApplicationProtocolVersion.VERSION_11 + ) { console.warn( - chalk.magenta( - 'Loopback address not detected in UI server configuration. This is not recommended.' - ) + 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 (applicationProtocol) { + switch (uiServerConfiguration.type) { case ApplicationProtocol.WS: - return new UIWebSocketServer(options ?? Configuration.getUIServer().options); + return new UIWebSocketServer(uiServerConfiguration); + case ApplicationProtocol.HTTP: + return new UIHttpServer(uiServerConfiguration); default: return null; }