Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@doodle/proxy / src / proxy.js
Size: Mime:
const request = require('request');
const { parse } = require('url');

/**
 * @param {string} API - The target host where you want to retrieve data from
 * @param {Request} req - Node's request
 * @param {Response} res - Node's response
 */

const proxy = API => (req, res) => {
  const url = `${API}${parse(req.originalUrl).path}`;

  // extract headers, except `host` and `origin`
  // eslint-disable-next-line no-unused-vars
  const { host, origin, ...headers } = req.headers;
  const { method } = req;
  let body;

  if (req.body && req.headers['content-type'] === 'application/json') {
    body = JSON.stringify(req.body);
  }

  console.log(`Proxying ${method}: ${url}`);

  // make a new request, pipe result to response
  // encoding by default is undefined
  // https://www.npmjs.com/package/request
  request({ url, headers, method, body })
    .on('error', err => {
      // handle pipe errors
      req.next(err);
    })
    .pipe(res);
};

module.exports = proxy;