async function respond()

in apps/mountebank-mock/mountebank-source/src/models/tcp/tcpServer.js [46:83]


    async function respond (payload, request, clientName, socket) {
        let formattedRequestData = payload.toString(encoding);
        if (formattedRequestData.length > 20) {
            formattedRequestData = formattedRequestData.substring(0, 20) + '...';
        }
        logger.info('%s => %s', clientName, formattedRequestData);

        try {
            // Translate network request to JSON
            const jsonRequest = await tcpRequest.createFrom(request);
            logger.debug('%s => %s', clientName, JSON.stringify(jsonRequest.data.toString(encoding)));

            // call mountebank with JSON request
            const mbResponse = await responseFn(jsonRequest),
                processedResponse = mbResponse.data || defaultResponse.data,
                buffer = Buffer.isBuffer(processedResponse)
                    ? processedResponse
                    : Buffer.from(processedResponse, encoding);

            if (mbResponse.blocked) {
                socket.destroy();
                return;
            }

            if (helpers.simulateFault(socket, mbResponse.fault, logger)) {
                return;
            }

            if (buffer.length > 0) {
                socket.write(buffer);
                logger.debug('%s <= %s', clientName, JSON.stringify(buffer.toString(encoding)));
            }
        }
        catch (error) {
            logger.error('%s X=> %s', clientName, JSON.stringify(errors.details(error)));
            socket.write(JSON.stringify({ errors: [error] }), 'utf8');
        }
    }