X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Fui-server%2Fui-services%2FUIServiceUtils.ts;h=a3cb11b14ac9b177a0ca19ff0565ad3b9be5fa5c;hb=083fb002e7ae10bf53cc5890d1e403d556c549f5;hp=573520b9687c93b267fcf4fcfe4eb70f6ee4453e;hpb=8114d10e3893e96bb725ce2fca9744429ee4b75b;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 573520b9..a3cb11b1 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,31 +13,42 @@ 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; } } logger.error( `${Utils.logPrefix( - ' UI WebSocket Server:' + ' UI WebSocket Server |' )} Unsupported protocol: ${protocol} or protocol version: ${version}` ); return false; }; + public static isProtocolAndVersionSupported = ( + protocol: Protocol, + version: ProtocolVersion + ): boolean => + Object.values(Protocol).includes(protocol) === true && + Object.values(ProtocolVersion).includes(version) === true; + + 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