utils.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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. //console.log(config)
  10. return new Promise((resolve, reject) => {
  11. request(config, (err, ret, body) => {
  12. if (!err) {
  13. resolve(body)
  14. } else {
  15. reject(err)
  16. }
  17. })
  18. })
  19. }
  20. /**
  21. * 转换对象
  22. * @param {Object} req
  23. * @param {Object} res
  24. * @param {Object} next
  25. * @return {Array} [config,protocol,host,cb]
  26. */
  27. const convert = (req,res,next,url) => {
  28. let host = req.hostname;
  29. let protocol = req.protocol;
  30. let method = req.method.toUpperCase();
  31. //console.log(method)
  32. let ip = req.headers['x-real-ip'] ? req.headers['x-real-ip'] : req.ip.replace(/::ffff:/, '');
  33. let _params = method === 'GET' ? req.query : req.body;
  34. let _url = req.body.url || req.query.url || '';
  35. if(_url) _params['url'] = _url;
  36. let cb = _params.callback;
  37. let headers = req.headers;
  38. let config = {
  39. method: method,
  40. gzip: true
  41. };
  42. let params = {};
  43. for (let i in _params) {
  44. let temp = _params[i];
  45. if (i === 'url') {
  46. let o = temp.split('?');
  47. let uri = o[0]
  48. config['url'] = uri;
  49. headers['host'] = uri.replace(/^(http|https):\/\//g, '').split('/')[0];
  50. if (o.length > 1) {
  51. o[1].split('&').forEach(item => {
  52. let k = item.split('=');
  53. params[k[0]] = encodeURI(k[1]);
  54. })
  55. }
  56. }else if(i=='headers'){
  57. let _t = temp || '{}'
  58. let _chs = eval(`(${_t})`)
  59. for(let ch in _chs){
  60. headers[ch] = _chs[ch]
  61. }
  62. } else {
  63. params[i] = temp;
  64. }
  65. }
  66. let _hs = headers
  67. let hs = {}
  68. for(let _h in _hs){
  69. let h = _hs[_h]
  70. if(/(content-length)/.test(_h)) continue
  71. else hs[_h] = _hs[_h]
  72. }
  73. //console.log(hs)
  74. if (method === 'POST') config['form'] = params;
  75. else config['url'] = config['url'] ? `${config['url']}?${qs.stringify(params)}` : (url?`${url}?${qs.stringify(params)}`:null) ;
  76. config['headers'] = hs;
  77. return [config,protocol,host,cb,params]
  78. }
  79. module.exports = {
  80. convert,
  81. createServer
  82. }