UNPKG

@cliz/inlets

Version:
58 lines (57 loc) 2.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const net = require("net"); const doreamon_1 = require("@zodash/doreamon"); const utils_1 = require("../../../utils"); const debug = require('debug')('inlets:client:http'); const logger = doreamon_1.default.logger.getLogger('client:http'); async function http(port, host, socket, { id, data: _data }) { const adapter = socket.adapter; const useNewProtocol = !!socket.useNewProtocol; let data; if (useNewProtocol && adapter) { data = typeof _data === 'string' ? _data : _data.toString('utf8'); } else { data = await utils_1.dataProcessor.client.onRequest(_data); } debug('request:', data); const req = new utils_1.Request(data); request(req, port, host, data, async (response, status, statusText) => { debug('response:', response.toString('utf8')); if (typeof status !== 'undefined') { logger.info(`${req.method} ${req.path} ${status} ${statusText}`); } const responseBuffer = Buffer.isBuffer(response) ? response : Buffer.from(response); if (useNewProtocol && adapter) { await adapter.sendHTTPResponse(id, responseBuffer); } else { const base64Data = responseBuffer.toString('base64'); socket.emit('response', { id, data: await utils_1.dataProcessor.client.response(base64Data), }); } }, () => { debug('request end'); }); } exports.default = http; function request(req, port, host, data, onData, onEnd) { const client = new net.Socket(); client.connect(+port, host, () => { }); client.on('data', data => { const _res = new utils_1.Response(data.toString('utf8')); onData(data, _res.status, _res.statusText); }); client.on('close', () => { onEnd(); }); client.on('error', (error) => { console.log('request error:', error); }); client.write(data); } ;