2018-02-14 19:21:31 +03:00
|
|
|
const _ = require('lodash');
|
|
|
|
const http = require('http');
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
invoke: function (app, reqParams) {
|
|
|
|
let req = new http.IncomingMessage();
|
|
|
|
let res = new http.ServerResponse({
|
|
|
|
method: reqParams.method
|
|
|
|
});
|
|
|
|
|
|
|
|
res.end = function () {
|
|
|
|
this.emit('finish');
|
|
|
|
};
|
|
|
|
|
|
|
|
req.connection = {
|
|
|
|
encrypted: reqParams.secure
|
|
|
|
};
|
|
|
|
|
|
|
|
req.method = 'GET';
|
|
|
|
req.url = reqParams.url;
|
|
|
|
req.headers = {
|
|
|
|
host: reqParams.host
|
|
|
|
};
|
|
|
|
|
|
|
|
res.connection = {
|
|
|
|
_httpMessage: res,
|
|
|
|
writable: true,
|
|
|
|
destroyed: false,
|
|
|
|
cork: function () {},
|
|
|
|
uncork: function () {},
|
|
|
|
write: function () {}
|
|
|
|
};
|
|
|
|
|
|
|
|
return new Promise(function (resolve) {
|
|
|
|
const onFinish = (() => {
|
|
|
|
resolve({
|
2018-02-22 02:05:05 +03:00
|
|
|
err: res.req.err,
|
2018-02-14 19:21:31 +03:00
|
|
|
statusCode: res.statusCode,
|
|
|
|
headers: res._headers,
|
|
|
|
template: res._template,
|
|
|
|
req: req,
|
|
|
|
res: res
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
res.once('finish', onFinish);
|
|
|
|
app(req, res);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
};
|