mirror of
https://github.com/curlconverter/curlconverter.git
synced 2022-05-22 02:35:29 +03:00
add support for multiline commands and -d param data /fixes #13
This commit is contained in:
4
test/curl16.txt
Normal file
4
test/curl16.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
curl -X GET 'http://fiddle.jshell.net/echo/html/'\
|
||||
-H 'Origin: http://fiddle.jshell.net'\
|
||||
-d msg1="value1"\
|
||||
-d msg2="value2"
|
||||
8
test/parser_output4.js
Normal file
8
test/parser_output4.js
Normal file
@@ -0,0 +1,8 @@
|
||||
module.exports = {
|
||||
url: 'http://fiddle.jshell.net/echo/html/',
|
||||
headers: {
|
||||
Origin: 'http://fiddle.jshell.net'
|
||||
},
|
||||
method: 'post',
|
||||
data: 'msg1=value1&msg2=value2'
|
||||
};
|
||||
@@ -230,3 +230,11 @@ test('http with charles syntax - python', function (t) {
|
||||
t.equal(pythonCode, goodPythonCode);
|
||||
t.end();
|
||||
});
|
||||
|
||||
test('multiline http post with data - parser', function (t) {
|
||||
var curlHttpGetCommand = fs.readFileSync(__dirname + '/curl16.txt', 'utf-8');
|
||||
var parsedCommand = utils.parseCurlCommand(curlHttpGetCommand);
|
||||
var goodParserOutput = require('./parser_output4.js');
|
||||
t.deepEquals(parsedCommand, goodParserOutput);
|
||||
t.end();
|
||||
});
|
||||
|
||||
29
util.js
29
util.js
@@ -2,6 +2,11 @@ var cookie = require('cookie');
|
||||
var yargs = require('yargs');
|
||||
|
||||
var parseCurlCommand = function(curlCommand) {
|
||||
var newlineFound = /\r|\n/.exec(curlCommand);
|
||||
if (newlineFound) {
|
||||
// remove newlines
|
||||
curlCommand = curlCommand.replace(/\\\r|\\\n/g, '');
|
||||
}
|
||||
var yargObject = yargs(curlCommand.trim());
|
||||
var parsedArguments = yargObject.argv;
|
||||
var cookieString;
|
||||
@@ -41,7 +46,7 @@ var parseCurlCommand = function(curlCommand) {
|
||||
var method;
|
||||
if (parsedArguments.X === 'POST') {
|
||||
method = 'post';
|
||||
} else if (parsedArguments.data || parsedArguments['data-binary']) {
|
||||
} else if (parsedArguments.d || parsedArguments.data || parsedArguments['data-binary']) {
|
||||
method = 'post';
|
||||
} else {
|
||||
method = 'get';
|
||||
@@ -60,10 +65,32 @@ var parseCurlCommand = function(curlCommand) {
|
||||
request.data = parsedArguments.data;
|
||||
} else if (parsedArguments['data-binary']) {
|
||||
request.data = parsedArguments['data-binary'];
|
||||
} else if (parsedArguments['d']) {
|
||||
request.data = parsedArguments['d'];
|
||||
}
|
||||
if (Array.isArray(request.data)) {
|
||||
request.data = joinDataArguments(request.data);
|
||||
}
|
||||
return request;
|
||||
};
|
||||
|
||||
/**
|
||||
* given this: [ 'msg1=value1', 'msg2=value2' ]
|
||||
* output this: 'msg1=value1&msg2=value2'
|
||||
* @param dataArguments
|
||||
*/
|
||||
var joinDataArguments = function(dataArguments) {
|
||||
var data = '';
|
||||
dataArguments.forEach(function(argument, i) {
|
||||
if (i === 0) {
|
||||
data += argument;
|
||||
} else {
|
||||
data += '&' + argument;
|
||||
}
|
||||
});
|
||||
return data;
|
||||
};
|
||||
|
||||
var serializeCookies = function(cookieDict) {
|
||||
var cookieString = '';
|
||||
var i = 0;
|
||||
|
||||
Reference in New Issue
Block a user