xml2js.js 792 B

12345678910111213141516171819202122232425262728293031323334
  1. 'use strict';
  2. const xml2js = require('../util/xml2js');
  3. module.exports = () => {
  4. return async (ctx, next) => {
  5. if (ctx.method === 'POST' && ctx.is('text/xml')) {
  6. const promise = new Promise((resolve, reject) => {
  7. let data = '';
  8. ctx.req.on('data', chunk => {
  9. data += chunk;
  10. });
  11. ctx.req.on('end', () => {
  12. xml2js.parseXml(data).then(result => {
  13. resolve(result);
  14. }).catch(err => {
  15. reject(err);
  16. });
  17. });
  18. });
  19. await promise.then(result => {
  20. ctx.req.body = result;
  21. }).catch(() => {
  22. ctx.req.body = '';
  23. });
  24. } else {
  25. if (ctx.query.echostr) {
  26. ctx.body = ctx.query.echostr;
  27. return;
  28. }
  29. }
  30. await next();
  31. };
  32. };