UNPKG

clientlinker-flow-httpproxy

Version:
48 lines (39 loc) 1.38 kB
const httpAction = require('./http_action'); const reqUniqKey = require('./req_uniq_key'); exports = module.exports = HttpProxyRoute; exports.express = routeExpress; exports.koa = routeKoa; function HttpProxyRoute(linker) { return function HttpProxyRouteHandle(req, res, next) { const serverRouterTime = new Date(); res.set('XH-Httpproxy-RequestTime', +serverRouterTime); if (arguments.length >= 3) return routeExpress(linker, serverRouterTime, req, res, next); else return routeKoa(linker, serverRouterTime, req, res); }; } function routeKoa(linker, serverRouterTime, ctx, next) { if (!linker) return next(); return cgihandler(linker, serverRouterTime, ctx.req).then(function(output) { const res = ctx.response; res.statusCode = output.statusCode || 200; res.type = 'json'; res.body = output.data; res.set('XH-Httpproxy-ResponseTime', Date.now()); }); } function routeExpress(linker, serverRouterTime, req, res, next) { if (!linker) return next(); return cgihandler(linker, serverRouterTime, req).then(function(output) { res.statusCode = output.statusCode || 200; res.set('XH-Httpproxy-ResponseTime', Date.now()); res.json(output.data); }); } function cgihandler(linker, serverRouterTime, req) { if (req.query.cgi == 'req_uniq_key') { return reqUniqKey(linker, req); } else { return httpAction(linker, serverRouterTime, req); } }