utils.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. const request = require('request');
  2. const qs = require('qs');
  3. /**
  4. * 公共请求
  5. * @param {Object} config
  6. * @return {Object} Promise
  7. */
  8. const createServer = (config) => {
  9. return new Promise((resolve, reject) => {
  10. request(config, (err, ret, body) => {
  11. if (!err) {
  12. resolve(body)
  13. } else {
  14. reject(err)
  15. }
  16. })
  17. })
  18. }
  19. /**
  20. * 转换对象
  21. * @param {Object} req
  22. * @param {Object} res
  23. * @param {Object} next
  24. * @return {Array} [config,protocol,host,cb]
  25. */
  26. const convert = (req,res,next,url) => {
  27. let host = req.hostname;
  28. let protocol = req.protocol;
  29. let method = req.method.toUpperCase();
  30. let ip = req.headers['x-real-ip'] ? req.headers['x-real-ip'] : req.ip.replace(/::ffff:/, '');
  31. let _params = method === 'GET' ? req.query : req.body;
  32. let cb = _params.callback;
  33. let headers = req.headers;
  34. let config = {
  35. method: method,
  36. gzip: true
  37. };
  38. let params = {};
  39. for (let i in _params) {
  40. let temp = _params[i];
  41. if (i === 'url') {
  42. let o = temp.split('?');
  43. let uri = o[0]
  44. config['url'] = uri;
  45. headers['host'] = uri.replace(/^(http|https):\/\//g, '').split('/')[0];
  46. if (o.length > 1) {
  47. o[1].split('&').forEach(item => {
  48. let k = item.split('=');
  49. params[k[0]] = encodeURI(k[1]);
  50. })
  51. }
  52. } else {
  53. params[i] = temp;
  54. }
  55. }
  56. if (method === 'POST') config['json'] = params;
  57. else config['url'] = config['url'] ? `${config['url']}?${qs.stringify(params)}` : (url?`${url}?${qs.stringify(params)}`:null) ;
  58. config['headers'] = headers;
  59. return [config,protocol,host,cb,params]
  60. }
  61. module.exports = {
  62. convert,
  63. createServer
  64. }