Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
codeBuilder clone,
constructAppendedParamsCode same "append" method + options argument
  • Loading branch information
saharbechor committed Mar 24, 2022
commit b0bf0dde961d186e8ecdb7d1e25e580b2ab4d136
5 changes: 5 additions & 0 deletions src/helpers/code-builder.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
'use strict'

const { cloneDeep } = require('lodash')
const util = require('util')

/**
Expand Down Expand Up @@ -100,4 +101,8 @@ CodeBuilder.prototype.join = function () {
return this.code.join(this.lineJoin)
}

CodeBuilder.prototype.clone = function() {
return cloneDeep(this);
}

module.exports = CodeBuilder
31 changes: 18 additions & 13 deletions src/helpers/params.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,26 @@
const defaultConstructParamsCodeOptions = {
isBrowser: false,
dataVarName: "data",
};

module.exports = {
/**
*
* @param {CodeBuilder} code - Original codeBuilder instance
* @param {[Object]} params - List of params objects
* @param {CodeBuilder} code - Code instance
* @param {boolean} isBrowser - Boolean indicating if browser or other environment(e.g. node)
* @param {string} dataVarName - The data object name
* @param {string} method - Which method to invoke on the data object(e.g. append, set)
* @returns New code with params inserted
* * @param {Objects} options
* @param {boolean} options.isBrowser - Boolean indicating if browser or other environment(e.g. node)
* @param {string} options.dataVarName - The data object name
* @returns New code instance with params appended to the supplied data object
*/
constructAppendedParamsCode: (
params,
code,
isBrowser = false,
dataVarName = "data",
method = "append"
params = [],
options = defaultConstructParamsCodeOptions
) => {
const { isBrowser = false, dataVarName = "data" } = options;
const newCode = code.clone();

params.forEach(function (param) {
Comment thread
saharbechor marked this conversation as resolved.
let value =
param.value !== undefined ? JSON.stringify(param.value.toString()) : "";
Expand All @@ -23,15 +29,14 @@ module.exports = {
? `yourAppInput.files[0], ${JSON.stringify(param.fileName)}`
: `fs.createReadStream("/PATH/TO/${param.fileName}")`;
}
code.push(
"%s.%s(%s, %s);",
newCode.push(
"%s.append(%s, %s);",
dataVarName,
method,
JSON.stringify(param.name),
value
);
});

return code;
return newCode;
},
};
4 changes: 2 additions & 2 deletions src/targets/javascript/axios.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ module.exports = function (source, options) {
code.blank()
.push('const encodedParams = new URLSearchParams();')

code = constructAppendedParamsCode(source.postData.params, code, true, 'encodedParams')
code = constructAppendedParamsCode(code, source.postData.params, { isBrowser: true, dataVarName: 'encodedParams' })

reqOpts.data = 'encodedParams'
break
Expand All @@ -64,7 +64,7 @@ module.exports = function (source, options) {
code.blank()
.push('const data = new FormData();')

code = constructAppendedParamsCode(source.postData.params, code, true)
code = constructAppendedParamsCode(code, source.postData.params, code, { isBrowser: true, dataVarName: 'data' })

reqOpts.data = 'data'
break
Expand Down
4 changes: 2 additions & 2 deletions src/targets/javascript/fetch.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ module.exports = function (source, options) {

case 'application/x-www-form-urlencoded': {
code.push('const encodedParams = new URLSearchParams();')
code = constructAppendedParamsCode(source.postData.params, code, true, 'encodedParams')
code = constructAppendedParamsCode(code, source.postData.params, { isBrowser: true, dataVarName: 'encodedParams' })
code.blank();

options.body = 'encodedParams'
Expand All @@ -59,7 +59,7 @@ module.exports = function (source, options) {
options.headers = removeProperty(options.headers, 'content-type')

code.push('const data = new FormData();')
code = constructAppendedParamsCode(source.postData.params, code, true, 'data')
code = constructAppendedParamsCode(code, source.postData.params, { isBrowser: true, dataVarName: 'data' })
code.blank()

options.body = 'data';
Expand Down
4 changes: 2 additions & 2 deletions src/targets/node/axios.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ module.exports = function (source, options) {
case 'application/x-www-form-urlencoded': {
code.blank()
.push('const encodedParams = new URLSearchParams();')
code = constructAppendedParamsCode(source.postData.params, code, false, 'encodedParams')
code = constructAppendedParamsCode(code, source.postData.params, { isBrowser: false, dataVarName: 'encodedParams' })

reqOpts.data = 'encodedParams'
break
Expand All @@ -66,7 +66,7 @@ module.exports = function (source, options) {
code.unshift('const FormData = require("form-data");')
.blank()
.push('const data = new FormData();')
code = constructAppendedParamsCode(source.postData.params, code, false, 'data')
code = constructAppendedParamsCode(code, source.postData.params, { isBrowser: false, dataVarName: 'data' })

reqOpts.data = 'data'
break
Expand Down
4 changes: 2 additions & 2 deletions src/targets/node/fetch.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ module.exports = function (source, options) {
code.blank()
.push('const encodedParams = new URLSearchParams();')

code = constructAppendedParamsCode(source.postData.params, code, false, 'encodedParams')
code = constructAppendedParamsCode(code, source.postData.params, { isBrowser: false, dataVarName: 'encodedParams' })

reqOpts.body = 'encodedParams'
break
Expand All @@ -63,7 +63,7 @@ module.exports = function (source, options) {
code.blank()
.push('const data = new FormData();')

code = constructAppendedParamsCode(source.postData.params, code, false, 'data')
code = constructAppendedParamsCode(code, source.postData.params, { isBrowser: false, dataVarName: 'data' })

reqOpts.body = 'data'
break
Expand Down