refactor: cleanup log messages
[e-mobility-charging-stations-simulator.git] / src / charging-station / ui-server / UIServerFactory.ts
CommitLineData
66a7748d 1import chalk from 'chalk'
8114d10e 2
66a7748d
JB
3import type { AbstractUIServer } from './AbstractUIServer.js'
4import { UIHttpServer } from './UIHttpServer.js'
5import { UIServerUtils } from './UIServerUtils.js'
6import { UIWebSocketServer } from './UIWebSocketServer.js'
a6080904
JB
7import {
8 ApplicationProtocol,
9 ApplicationProtocolVersion,
66a7748d
JB
10 type UIServerConfiguration
11} from '../../types/index.js'
fe94fce0 12
66a7748d 13// eslint-disable-next-line @typescript-eslint/no-extraneous-class
268a74bb 14export class UIServerFactory {
66a7748d 15 private constructor () {
fe94fce0
JB
16 // This is intentional
17 }
18
66a7748d
JB
19 public static getUIServerImplementation (
20 uiServerConfiguration: UIServerConfiguration
6d2b7d01 21 ): AbstractUIServer | undefined {
66a7748d
JB
22 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
23 if (!UIServerUtils.isLoopback(uiServerConfiguration.options!.host!)) {
d5bd1c00 24 console.warn(
9c5d9fa4 25 chalk.yellow(
412cece8 26 'Loopback address not detected in UI server configuration. This is not recommended'
66a7748d
JB
27 )
28 )
d5bd1c00 29 }
a6080904 30 uiServerConfiguration = {
7aba23e1 31 version: ApplicationProtocolVersion.VERSION_11,
66a7748d
JB
32 ...uiServerConfiguration
33 }
7aba23e1
JB
34 if (
35 uiServerConfiguration.type === ApplicationProtocol.WS &&
36 uiServerConfiguration.version !== ApplicationProtocolVersion.VERSION_11
37 ) {
38 console.warn(
39 chalk.yellow(
412cece8 40 `Only version ${ApplicationProtocolVersion.VERSION_11} is supported for WebSocket UI server. Falling back to version ${ApplicationProtocolVersion.VERSION_11}`
66a7748d
JB
41 )
42 )
43 uiServerConfiguration.version = ApplicationProtocolVersion.VERSION_11
7aba23e1 44 }
864e5f8d 45 switch (uiServerConfiguration.type) {
fe94fce0 46 case ApplicationProtocol.WS:
66a7748d 47 return new UIWebSocketServer(uiServerConfiguration)
1f7fa4de 48 case ApplicationProtocol.HTTP:
66a7748d 49 return new UIHttpServer(uiServerConfiguration)
fe94fce0
JB
50 }
51 }
52}