X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Fui-server%2Fui-services%2FUIServiceUtils.ts;h=c019982854c22d73bcc446ca3a2ecc56caa1aca1;hb=10db00b2276f4cc7a88dd18e8f6f80593d6458b3;hp=cf89b0c60598c2625b691288b144819c9e52c209;hpb=32de5a575189d226213641f5ee36004f8454cb50;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ui-server/ui-services/UIServiceUtils.ts b/src/charging-station/ui-server/ui-services/UIServiceUtils.ts index cf89b0c6..c0199828 100644 --- a/src/charging-station/ui-server/ui-services/UIServiceUtils.ts +++ b/src/charging-station/ui-server/ui-services/UIServiceUtils.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from 'http'; +import type { IncomingMessage } from 'http'; import { Protocol, ProtocolVersion } from '../../../types/UIProtocol'; import logger from '../../../utils/Logger'; @@ -13,20 +13,14 @@ export class UIServiceUtils { protocols: Set, request: IncomingMessage ): string | false => { - let protocolIndex: number; let protocol: Protocol; let version: ProtocolVersion; + if (protocols.size === 0) { + return false; + } for (const fullProtocol of protocols) { - protocolIndex = fullProtocol.indexOf(Protocol.UI); - protocol = fullProtocol.substring( - protocolIndex, - protocolIndex + Protocol.UI.length - ) as Protocol; - version = fullProtocol.substring(protocolIndex + Protocol.UI.length) as ProtocolVersion; - if ( - Object.values(Protocol).includes(protocol) && - Object.values(ProtocolVersion).includes(version) - ) { + [protocol, version] = UIServiceUtils.getProtocolAndVersion(fullProtocol); + if (UIServiceUtils.isProtocolAndVersionSupported(protocol, version) === true) { return fullProtocol; } } @@ -38,6 +32,22 @@ export class UIServiceUtils { return false; }; + public static isProtocolAndVersionSupported = ( + protocol: Protocol, + version: ProtocolVersion + ): boolean => + Object.values(Protocol).includes(protocol) && Object.values(ProtocolVersion).includes(version); + + public static getProtocolAndVersion = (protocolStr: string): [Protocol, ProtocolVersion] => { + const protocolIndex = protocolStr.indexOf(Protocol.UI); + const protocol = protocolStr.substring( + protocolIndex, + protocolIndex + Protocol.UI.length + ) as Protocol; + const version = protocolStr.substring(protocolIndex + Protocol.UI.length) as ProtocolVersion; + return [protocol, version]; + }; + public static isLoopback(address: string): boolean { const isLoopbackRegExp = new RegExp( // eslint-disable-next-line no-useless-escape