UNPKG

1.29 kBJavaScriptView Raw
1
2const request = require('request');
3
4const getOptions = (target, req) => {
5 const options = {
6 uri: target + req.url,
7 methid: req.method,
8 headers: {
9 'content-type': 'application/json',
10 'accept': req.headers['accept']
11 },
12 resolveWithFullResponse: true
13 };
14 switch(req.method.toLocaleLowerCase()) {
15 case 'post':
16 case 'put':
17 options.json = true;
18 options.body = req.body
19 break;
20 case 'get':
21 if (Object.keys(req.query).length > 0) {
22 options.uri = `${target}${req.url.split('?')[0]}`;
23 options.qs = req.query;
24 }
25 break;
26 }
27 return options;
28};
29
30const requestAsync = (options) => {
31 return new Promise((resolve, reject) => {
32 request(options, (error, response, body) => {
33 if (error) reject({ error: error, statusCode: response.statusCode });
34 resolve({ error: error, statusCode: response.statusCode, body: body });
35 });
36 });
37};
38
39const proxyServer = (proxy, app) => {
40 app.all(proxy.route, async (req, res, next) => {
41 const response = await requestAsync(getOptions(proxy.target, req));
42 if (response.error) return res.status(response.statusCode).send(response.error);
43 return res.status(response.statusCode).send(response.body);
44 });
45};
46
47module.exports = proxyServer;
\No newline at end of file