utils.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. console.log(config)
  12. if (!err && ret.statusCode === 200) {
  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. let ip = req.headers['x-real-ip'] ? req.headers['x-real-ip'] : req.ip.replace(/::ffff:/, '');
  32. let _params = method === 'GET' ? req.query : req.body;
  33. let cb = _params.callback;
  34. let headers = req.headers;
  35. let config = {
  36. method: method,
  37. gzip: true
  38. };
  39. let params = {};
  40. for (let i in _params) {
  41. let temp = _params[i];
  42. if (i === 'url') {
  43. let o = temp.split('?');
  44. let uri = o[0]
  45. config['uri'] = uri;
  46. headers['host'] = uri.replace(/^(http|https):\/\//g, '').split('/')[0];
  47. if (o.length > 1) {
  48. o[1].split('&').forEach(item => {
  49. let k = item.split('=');
  50. params[k[0]] = encodeURI(k[1]);
  51. })
  52. }
  53. } else {
  54. params[i] = temp;
  55. }
  56. }
  57. if (method === 'POST') config['json'] = params;
  58. else config['uri'] = config['uri'] ? `${config['uri']}?${qs.stringify(params)}` : (url?`${url}?${qs.stringify(params)}`:null) ;
  59. config['headers'] = headers;
  60. return [config,protocol,host,cb,params]
  61. }
  62. module.exports = {
  63. convert,
  64. createServer
  65. }