X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Fui-server%2FUIHttpServer.ts;h=a9b620635d03df20db1898e6894fb94be00c8993;hb=a745e4127ed71e21b50d0397cd8ef79bf59a7573;hp=98a1a4953340c91b20ef02d163838fce8fbccdae;hpb=a0202edcc580610fef591ce28554d87ed20faa1c;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 98a1a495..a9b62063 100644 --- a/src/charging-station/ui-server/UIHttpServer.ts +++ b/src/charging-station/ui-server/UIHttpServer.ts @@ -7,6 +7,7 @@ import { ServerOptions } from '../../types/ConfigurationData'; import { ProcedureName, Protocol, + ProtocolRequest, ProtocolResponse, ProtocolVersion, RequestPayload, @@ -48,25 +49,16 @@ export default class UIHttpServer extends AbstractUIServer { public sendResponse(response: string): void { const [uuid, payload] = JSON.parse(response) as ProtocolResponse; - let statusCode: StatusCodes; - switch (payload.status) { - case ResponseStatus.SUCCESS: - statusCode = StatusCodes.OK; - break; - case ResponseStatus.FAILURE: - default: - statusCode = StatusCodes.BAD_REQUEST; - break; - } + const statusCode = this.responseStatusToStatusCode(payload.status); if (this.responseHandlers.has(uuid)) { - const { procedureName, res } = this.responseHandlers.get(uuid); + const { res } = this.responseHandlers.get(uuid); res.writeHead(statusCode, { 'Content-Type': 'application/json' }); res.write(JSON.stringify(payload)); res.end(); this.responseHandlers.delete(uuid); } else { logger.error( - `${this.logPrefix()} ${moduleName}.sendResponse: Response received for unknown request: ${response}` + `${this.logPrefix()} ${moduleName}.sendResponse: Response for unknown request: ${response}` ); } } @@ -92,10 +84,7 @@ export default class UIHttpServer extends AbstractUIServer { } req.on('error', (error) => { logger.error( - `${this.logPrefix( - moduleName, - 'requestListener.req.onerror' - )} Error at incoming request handling:`, + `${this.logPrefix(moduleName, 'requestListener.req.onerror')} Error on HTTP request:`, error ); }); @@ -104,13 +93,12 @@ export default class UIHttpServer extends AbstractUIServer { } if (req.method === 'POST') { const bodyBuffer = []; - let body: RequestPayload; req .on('data', (chunk) => { bodyBuffer.push(chunk); }) .on('end', () => { - body = JSON.parse(Buffer.concat(bodyBuffer).toString()) as RequestPayload; + const body = JSON.parse(Buffer.concat(bodyBuffer).toString()) as RequestPayload; this.uiServices .get(version) .requestHandler(this.buildRequest(uuid, procedureName, body ?? {})) @@ -122,6 +110,10 @@ export default class UIHttpServer extends AbstractUIServer { throw new BaseError(`Unsupported HTTP method: '${req.method}'`); } } catch (error) { + logger.error( + `${this.logPrefix(moduleName, 'requestListener')} Handle HTTP request error:`, + error + ); this.sendResponse(this.buildResponse(uuid, { status: ResponseStatus.FAILURE })); } } @@ -131,10 +123,21 @@ export default class UIHttpServer extends AbstractUIServer { procedureName: ProcedureName, requestPayload: RequestPayload ): string { - return JSON.stringify([id, procedureName, requestPayload]); + return JSON.stringify([id, procedureName, requestPayload] as ProtocolRequest); } private buildResponse(id: string, responsePayload: ResponsePayload): string { - return JSON.stringify([id, responsePayload]); + return JSON.stringify([id, responsePayload] as ProtocolResponse); + } + + private responseStatusToStatusCode(status: ResponseStatus): StatusCodes { + switch (status) { + case ResponseStatus.SUCCESS: + return StatusCodes.OK; + case ResponseStatus.FAILURE: + return StatusCodes.BAD_REQUEST; + default: + return StatusCodes.INTERNAL_SERVER_ERROR; + } } }