X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Fui-server%2FUIHttpServer.ts;h=9e33302682533c68d39e9536cc878bd15a3b68c6;hb=59b6ed8d1db313ef3371efd8ab5e039cf3dedab0;hp=7b777b86040c3cba972d886da3df9a11dbab999a;hpb=7cb5b17fac198fe3ecd009ac4c692c0d88dd051e;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ui-server/UIHttpServer.ts b/src/charging-station/ui-server/UIHttpServer.ts index 7b777b86..9e333026 100644 --- a/src/charging-station/ui-server/UIHttpServer.ts +++ b/src/charging-station/ui-server/UIHttpServer.ts @@ -1,26 +1,31 @@ -import type { IncomingMessage, RequestListener, ServerResponse } from 'http'; +import type { IncomingMessage, RequestListener, ServerResponse } from 'node:http'; import { StatusCodes } from 'http-status-codes'; -import BaseError from '../../exception/BaseError'; -import type { UIServerConfiguration } from '../../types/ConfigurationData'; +import { BaseError } from '../../exception'; import { - ProcedureName, - Protocol, - ProtocolRequest, - ProtocolResponse, - ProtocolVersion, - RequestPayload, + type ProcedureName, + type Protocol, + type ProtocolRequest, + type ProtocolResponse, + type ProtocolVersion, + type RequestPayload, ResponseStatus, -} from '../../types/UIProtocol'; -import logger from '../../utils/Logger'; -import Utils from '../../utils/Utils'; -import { AbstractUIServer } from './AbstractUIServer'; -import { UIServiceUtils } from './ui-services/UIServiceUtils'; + type UIServerConfiguration, +} from '../../types'; +import { Constants, Utils, logger } from '../../utils'; +import { AbstractUIServer, UIServerUtils } from '../internal'; const moduleName = 'UIHttpServer'; -export default class UIHttpServer extends AbstractUIServer { +enum HttpMethods { + GET = 'GET', + PUT = 'PUT', + POST = 'POST', + PATCH = 'PATCH', +} + +export class UIHttpServer extends AbstractUIServer { public constructor(protected readonly uiServerConfiguration: UIServerConfiguration) { super(uiServerConfiguration); } @@ -60,12 +65,14 @@ export default class UIHttpServer extends AbstractUIServer { } } - public logPrefix(modName?: string, methodName?: string, prefixSuffix?: string): string { + public logPrefix = (modName?: string, methodName?: string, prefixSuffix?: string): string => { const logMsgPrefix = prefixSuffix ? `UI HTTP Server ${prefixSuffix}` : 'UI HTTP Server'; const logMsg = - modName && methodName ? ` ${logMsgPrefix} | ${modName}.${methodName}:` : ` ${logMsgPrefix} |`; + Utils.isNotEmptyString(modName) && Utils.isNotEmptyString(methodName) + ? ` ${logMsgPrefix} | ${modName}.${methodName}:` + : ` ${logMsgPrefix} |`; return Utils.logPrefix(logMsg); - } + }; private requestListener(req: IncomingMessage, res: ServerResponse): void { this.authenticate(req, (err) => { @@ -90,7 +97,7 @@ export default class UIHttpServer extends AbstractUIServer { this.responseHandlers.set(uuid, res); try { const fullProtocol = `${protocol}${version}`; - if (UIServiceUtils.isProtocolAndVersionSupported(fullProtocol) === false) { + if (UIServerUtils.isProtocolAndVersionSupported(fullProtocol) === false) { throw new BaseError(`Unsupported UI protocol version: '${fullProtocol}'`); } this.registerProtocolVersionUIService(version); @@ -100,7 +107,7 @@ export default class UIHttpServer extends AbstractUIServer { error ); }); - if (req.method === 'POST') { + if (req.method === HttpMethods.POST) { const bodyBuffer = []; req .on('data', (chunk) => { @@ -110,10 +117,14 @@ export default class UIHttpServer extends AbstractUIServer { const body = JSON.parse(Buffer.concat(bodyBuffer).toString()) as RequestPayload; this.uiServices .get(version) - .requestHandler(this.buildProtocolRequest(uuid, procedureName, body ?? {})) - .catch(() => { - /* Error caught by AbstractUIService */ - }); + ?.requestHandler( + this.buildProtocolRequest( + uuid, + procedureName, + body ?? Constants.EMPTY_FREEZED_OBJECT + ) + ) + .catch(Constants.EMPTY_FUNCTION); }); } else { throw new BaseError(`Unsupported HTTP method: '${req.method}'`);