parseBody.js 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. "use strict";
  2. var _ = require('../../../lodash'), sanitize = require('./sanitize').sanitize;
  3. /**
  4. * Used to parse the body of the postman SDK-request and return in the desired format
  5. *
  6. * @param {Object} request - postman SDK-request object
  7. * @param {Boolean} trimRequestBody - whether to trim request body fields
  8. * @returns {String} - request body
  9. */
  10. module.exports = function (request, trimRequestBody) {
  11. // used to check whether body is present in the request and return accordingly
  12. if (request.body) {
  13. var requestBody = '', bodyMap = [], enabledBodyList;
  14. switch (request.body.mode) {
  15. case 'raw':
  16. if (!_.isEmpty(request.body[request.body.mode])) {
  17. requestBody += 'request.body = ' +
  18. `${sanitize(request.body[request.body.mode], request.body.mode, trimRequestBody)}\n`;
  19. }
  20. return requestBody;
  21. case 'graphql':
  22. // eslint-disable-next-line no-case-declarations
  23. let query = request.body[request.body.mode].query, graphqlVariables;
  24. try {
  25. graphqlVariables = JSON.parse(request.body[request.body.mode].variables);
  26. }
  27. catch (e) {
  28. graphqlVariables = {};
  29. }
  30. requestBody += 'request.body = ' +
  31. `${sanitize(JSON.stringify({
  32. query: query,
  33. variables: graphqlVariables
  34. }), 'raw', trimRequestBody)}\n`;
  35. return requestBody;
  36. case 'urlencoded':
  37. enabledBodyList = _.reject(request.body[request.body.mode], 'disabled');
  38. if (!_.isEmpty(enabledBodyList)) {
  39. bodyMap = _.map(enabledBodyList, function (value) {
  40. return `${sanitize(value.key, request.body.mode, trimRequestBody)}=` +
  41. `${sanitize(value.value, request.body.mode, trimRequestBody)}`;
  42. });
  43. requestBody = `request.body = "${sanitize(bodyMap.join('&'), 'doubleQuotes')}"\n`;
  44. }
  45. return requestBody;
  46. case 'formdata':
  47. enabledBodyList = _.reject(request.body[request.body.mode], 'disabled');
  48. if (!_.isEmpty(enabledBodyList)) {
  49. bodyMap = _.map(enabledBodyList, function (data) {
  50. if (data.type === 'text') {
  51. return `['${sanitize(data.key, 'formdata', trimRequestBody)}',` +
  52. ` '${sanitize(data.value, 'formdata', trimRequestBody)}']`;
  53. }
  54. return `['${sanitize(data.key, 'formdata', trimRequestBody)}', File.open('${data.src}')]`;
  55. });
  56. }
  57. requestBody = `form_data = [${bodyMap.join(',')}]\n`;
  58. requestBody += 'request.set_form form_data, \'multipart/form-data\'';
  59. return requestBody;
  60. case 'file':
  61. requestBody = 'request.body = "<file contents here>"\n';
  62. return requestBody;
  63. default:
  64. return requestBody;
  65. }
  66. }
  67. return '';
  68. };