send_sample_request_utils.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. //this block is used to make this module works with Node (CommonJS module format)
  2. if (typeof define !== 'function') {
  3. var define = require('amdefine')(module)
  4. }
  5. define([], function () {
  6. function handleNestedFields(object, key, params, paramType) {
  7. var attributes = key.split('.');
  8. var field = attributes[0];
  9. params.push(field);
  10. if (attributes.length > 1 && paramType[params.join('.')] == 'Object') {
  11. var nestedField = attributes.slice(1).join('.');
  12. if (!object[field])
  13. object[field] = {};
  14. if (typeof object[field] == 'object') {
  15. object[field][nestedField] = object[key];
  16. delete object[key];
  17. handleNestedFields(object[field], nestedField, params, paramType);
  18. }
  19. }
  20. }
  21. function handleNestedFieldsForAllParams(param, paramType) {
  22. var result = Object.assign({}, param);
  23. Object.keys(result).forEach(function (key) {
  24. handleNestedFields(result, key, [], paramType);
  25. });
  26. return result
  27. }
  28. function handleArraysAndObjectFields(param, paramType) {
  29. var result = Object.assign({}, param);
  30. Object.keys(paramType).forEach(function (key) {
  31. if (result[key] && (paramType[key].endsWith('[]') || paramType[key] === 'Object')) {
  32. try {
  33. result[key] = JSON.parse(result[key]);
  34. } catch (e) {;}
  35. }
  36. });
  37. return result
  38. }
  39. function handleNestedAndParsingFields(param, paramType) {
  40. var result = handleArraysAndObjectFields(param, paramType);
  41. result = handleNestedFieldsForAllParams(result, paramType);
  42. return result;
  43. }
  44. return {handleNestedAndParsingFields};
  45. });